Kotlin:
Arbeider med YAML

Hvordan:

Kotlin har ikke innebygget støtte for YAML-tolkning og serialisering, men du kan bruke populære tredjepartsbiblioteker som snakeyaml (for generell YAML-tolkning) og kotlinx.serialization (med en YAML-formatutvidelse) for å jobbe med YAML-filer.

Bruke snakeyaml

Avhengighet:

implementation 'org.yaml:snakeyaml:1.30'

Lese YAML:

import org.yaml.snakeyaml.Yaml
import java.io.FileInputStream

fun readYaml(filePath: String) {
    val yaml = Yaml()
    val inputStream = FileInputStream(filePath)
    val data = yaml.load<Map<String, Any>>(inputStream)

    println(data)
}

// Eksempel på bruk
fun main() {
    readYaml("config.yaml")
}

Eksempel config.yaml:

database:
  host: localhost
  port: 5432

Eksempel på utskrift:

{database={host=localhost, port=5432}}

Bruke kotlinx.serialization med YAML

Først, sørg for at du har biblioteket kotlinx-serialization med et passende YAML-støttebibliotek (hvis tilgjengelig, ettersom kotlinx.serialization hovedsakelig retter seg mot JSON og andre formater direkte).

Avhengighet:

// For JSON (illustrativ, sjekk for YAML-støtte eller alternative biblioteker)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'

Definere en serialiserbar dataklasse:

import kotlinx.serialization.Serializable

@Serializable
data class Config(
    val database: Database
)

@Serializable
data class Database(
    val host: String,
    val port: Int
)

Dessverre, på tidspunktet for skriving, kan direkte YAML-støtte i kotlinx.serialization være begrenset eller i utvikling. Du kan trenge å bruke en mellomliggende fremstilling (som å konvertere YAML til JSON med snakeyaml og deretter tolke JSON med kotlinx.serialization) eller se etter samfunnsdrevne YAML-serialiseringsprosjekter som er kompatible med kotlinx.serialization.

For JSON ville koden se slik ut:

import kotlinx.serialization.json.Json
import kotlinx.serialization.decodeFromString

fun main() {
    val jsonText = """
    {
        "database": {
            "host": "localhost",
            "port": 5432
        }
    }
    """.trimIndent()
    
    val config = Json.decodeFromString<Config>(jsonText)
    println(config)
}

Ettersom Kotlin og dets økosystem fortsetter å utvikle seg, hold et øye med den offisielle dokumentasjonen og samfunnsressurser for det siste innen YAML-støtte og biblioteker.