Kotlin:
Travailler avec YAML

Comment faire :

Kotlin n’a pas de support intégré pour l’analyse et la sérialisation YAML, mais vous pouvez utiliser des bibliothèques tierces populaires telles que snakeyaml (pour l’analyse YAML générale) et kotlinx.serialization (avec une extension de format YAML) pour travailler avec des fichiers YAML.

Utiliser snakeyaml

Dépendance :

implementation 'org.yaml:snakeyaml:1.30'

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

// Exemple d'utilisation
fun main() {
    readYaml("config.yaml")
}

Exemple de config.yaml :

database:
  host: localhost
  port: 5432

Sortie d’exemple :

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

Utiliser kotlinx.serialization avec YAML

D’abord, assurez-vous d’avoir la bibliothèque kotlinx-serialization avec une bibliothèque de support YAML appropriée (si disponible, car kotlinx.serialization cible principalement JSON et d’autres formats directement).

Dépendance :

// Pour JSON (illustratif, vérifiez le support YAML ou les bibliothèques alternatives)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'

Définir une classe de données sérialisable :

import kotlinx.serialization.Serializable

@Serializable
data class Config(
    val database: Database
)

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

Malheureusement, au moment de la rédaction, le support YAML direct dans kotlinx.serialization peut être limité ou en évolution. Vous pourriez avoir besoin d’utiliser une représentation intermédiaire (comme convertir YAML en JSON avec snakeyaml et ensuite analyser JSON avec kotlinx.serialization) ou rechercher des projets de sérialisation YAML pilotés par la communauté compatibles avec kotlinx.serialization.

Pour JSON, le code ressemblerait à ceci :

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

À mesure que Kotlin et son écosystème continuent d’évoluer, restez à l’affût de la documentation officielle et des ressources communautaires pour les dernières informations sur le support YAML et les bibliothèques.