Kotlin:
Att Arbeta med YAML
Hur man gör:
Kotlin har inte inbyggt stöd för YAML-tolkning och serialisering, men du kan använda populära tredjepartsbibliotek som snakeyaml
(för allmän YAML-tolkning) och kotlinx.serialization
(med en YAML-formatutvidgning) för att arbeta med YAML-filer.
Använda snakeyaml
Beroende:
implementation 'org.yaml:snakeyaml:1.30'
Läs 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)
}
// Exempelanvändning
fun main() {
readYaml("config.yaml")
}
Exempel config.yaml
:
database:
host: localhost
port: 5432
Exempelutdata:
{database={host=localhost, port=5432}}
Använda kotlinx.serialization
med YAML
Först, se till att du har biblioteket kotlinx-serialization
med ett passande YAML-stödbibliotek (om tillgängligt, eftersom kotlinx.serialization
främst riktar sig till JSON och andra format direkt).
Beroende:
// För JSON (illustrativt, kontrollera för YAML-stöd eller alternativa bibliotek)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'
Definiera en serialiserbar dataklass:
import kotlinx.serialization.Serializable
@Serializable
data class Config(
val database: Database
)
@Serializable
data class Database(
val host: String,
val port: Int
)
Tyvärr, vid tidpunkten för detta skrivande, kan direktstöd för YAML i kotlinx.serialization
vara begränsat eller under utveckling. Du kan behöva använda en mellanrepresentation (som att konvertera YAML till JSON med snakeyaml
och sedan tolka JSON med kotlinx.serialization
) eller leta efter community-drivna YAML-serialiseringsprojekt som är kompatibla med kotlinx.serialization
.
För JSON skulle koden se ut ungefär så här:
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)
}
Eftersom Kotlin och dess ekosystem fortsätter att utvecklas, håll ett öga på den officiella dokumentationen och communityresurserna för det senaste inom YAML-stöd och bibliotek.