Kotlin:
Trabajando con YAML

Cómo hacerlo:

Kotlin no tiene soporte integrado para el análisis y serialización de YAML, pero puedes utilizar bibliotecas de terceros populares como snakeyaml (para análisis de YAML en general) y kotlinx.serialization (con una extensión de formato YAML) para trabajar con archivos YAML.

Usando snakeyaml

Dependencia:

implementation 'org.yaml:snakeyaml:1.30'

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

// Ejemplo de uso
fun main() {
    readYaml("config.yaml")
}

Ejemplo de config.yaml:

database:
  host: localhost
  port: 5432

Salida de ejemplo:

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

Usando kotlinx.serialization con YAML

Primero, asegúrate de tener la biblioteca kotlinx-serialization con una biblioteca de soporte YAML adecuada (si está disponible, ya que kotlinx.serialization se dirige principalmente a JSON y otros formatos directamente).

Dependencia:

// Para JSON (ilustrativo, verifica el soporte de YAML o bibliotecas alternativas)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'

Define una clase de datos serializable:

import kotlinx.serialization.Serializable

@Serializable
data class Config(
    val database: Database
)

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

Desafortunadamente, en el momento de escribir esto, el soporte directo de YAML en kotlinx.serialization puede ser limitado o estar evolucionando. Es posible que necesites usar una representación intermedia (como convertir YAML a JSON con snakeyaml y luego analizar JSON con kotlinx.serialization) o buscar proyectos de serialización YAML impulsados por la comunidad compatibles con kotlinx.serialization.

Para JSON, el código se vería algo así:

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

A medida que Kotlin y su ecosistema continúan evolucionando, mantén un ojo en la documentación oficial y los recursos de la comunidad para lo último en soporte y bibliotecas YAML.