Kotlin:
Työskentely YAML:n kanssa
Kuinka:
Kotlin ei tue sisäänrakennettuna YAML:n jäsennystä ja serialisointia, mutta voit hyödyntää suosittuja kolmannen osapuolen kirjastoja, kuten snakeyaml
(yleiseen YAML-jäsennykseen) ja kotlinx.serialization
(YAML-muoto laajennuksena) työskennelläksesi YAML-tiedostojen kanssa.
Käyttämällä snakeyaml
Riippuvuus:
implementation 'org.yaml:snakeyaml:1.30'
Lue 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)
}
// Esimerkkitapaus
fun main() {
readYaml("config.yaml")
}
Esimerkki config.yaml
:
database:
host: localhost
port: 5432
Esimerkkituloste:
{database={host=localhost, port=5432}}
Käyttämällä kotlinx.serialization
YAML:n kanssa
Varmista ensin, että sinulla on kotlinx-serialization
-kirjasto sopivalla YAML-tukikirjastolla (jos saatavilla, koska kotlinx.serialization
suuntautuu ensisijaisesti JSON:iin ja muihin suoraan tuettuihin formaatteihin).
Riippuvuus:
// JSON:lle (havainnollistava, tarkista YAML-tuki tai vaihtoehtoiset kirjastot)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'
Määrittele serialisoituva data-luokka:
import kotlinx.serialization.Serializable
@Serializable
data class Config(
val database: Database
)
@Serializable
data class Database(
val host: String,
val port: Int
)
Valitettavasti kirjoitushetkellä suora YAML-tuki kotlinx.serialization
-kirjastossa saattaa olla rajallinen tai kehittyvä. Saatat joutua käyttämään välimuotoa (kuten muuntaa YAML JSON:ksi snakeyaml
-kirjastolla ja sitten jäsentää JSON kotlinx.serialization
-kirjastolla) tai etsiä yhteisön vetämiä YAML-serialisointiprojekteja, jotka ovat yhteensopivia kotlinx.serialization
-kirjaston kanssa.
JSONille koodi näyttäisi tältä:
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)
}
Koska Kotlin ja sen ekosysteemi jatkavat kehittymistään, pidä silmällä virallista dokumentaatiota ja yhteisöresursseja saadaksesi viimeisimmät tiedot YAML-tuesta ja kirjastoista.