Kotlin:
Praca z YAML

Jak to zrobić:

Kotlin nie ma wbudowanego wsparcia dla parsowania i serializacji YAML, ale można wykorzystać popularne biblioteki stron trzecich, takie jak snakeyaml (do ogólnego parsowania YAML) oraz kotlinx.serialization (z rozszerzeniem formatu YAML) do pracy z plikami YAML.

Korzystając z snakeyaml

Zależność:

implementation 'org.yaml:snakeyaml:1.30'

Odczyt 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)
}

// Przykładowe użycie
fun main() {
    readYaml("config.yaml")
}

Przykładowy config.yaml:

database:
  host: localhost
  port: 5432

Przykładowe wyjście:

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

Korzystając z kotlinx.serialization w połączeniu z YAML

Najpierw upewnij się, że masz bibliotekę kotlinx-serialization z odpowiednią biblioteką wsparcia YAML (jeśli dostępna, ponieważ kotlinx.serialization głównie kieruje się do JSON i innych formatów bezpośrednio).

Zależność:

// Dla JSON (ilustracyjnie, sprawdź wsparcie dla YAML lub alternatywne biblioteki)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'

Zdefiniuj serializowalną klasę danych:

import kotlinx.serialization.Serializable

@Serializable
data class Config(
    val database: Database
)

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

Niestety, w momencie pisania tego tekstu, bezpośrednie wsparcie YAML w kotlinx.serialization może być ograniczone lub ewoluować. Może być konieczne użycie pośredniej reprezentacji (takiej jak konwersja YAML na JSON za pomocą snakeyaml a następnie parsowanie JSON z kotlinx.serialization) lub poszukiwanie projektów serializacji YAML prowadzonych przez społeczność i kompatybilnych z kotlinx.serialization.

Dla JSON kod wyglądałby mniej więcej tak:

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)
}

Jako że Kotlin i jego ekosystem ciągle się rozwijają, zwracaj uwagę na oficjalną dokumentację i zasoby społeczności, aby być na bieżąco z najnowszymi informacjami o wsparciu YAML i bibliotekach.