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.