Kotlin:
Trabalhando com YAML

Como Fazer:

Kotlin não possui suporte nativo para análise (parsing) e serialização de YAML, mas você pode utilizar bibliotecas de terceiros populares como snakeyaml (para análise de YAML em geral) e kotlinx.serialization (com uma extensão de formato YAML) para trabalhar com arquivos YAML.

Usando snakeyaml

Dependência:

implementation 'org.yaml:snakeyaml:1.30'

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

// Uso de exemplo
fun main() {
    readYaml("config.yaml")
}

Exemplo de config.yaml:

database:
  host: localhost
  port: 5432

Saída de Exemplo:

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

Usando kotlinx.serialization com YAML

Primeiro, certifique-se de ter a biblioteca kotlinx-serialization com uma biblioteca de suporte YAML adequada (se disponível, já que kotlinx.serialization visa primariamente JSON e outros formatos diretamente).

Dependência:

// Para JSON (ilustrativo, verifique o suporte para YAML ou bibliotecas alternativas)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'

Definir uma classe de dados serializável:

import kotlinx.serialization.Serializable

@Serializable
data class Config(
    val database: Database
)

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

Infelizmente, no momento da escrita, o suporte direto a YAML em kotlinx.serialization pode ser limitado ou estar evoluindo. Você pode precisar usar uma representação intermediária (como converter YAML para JSON com snakeyaml e depois analisar JSON com kotlinx.serialization) ou procurar por projetos de serialização de YAML impulsionados pela comunidade e compatíveis com kotlinx.serialization.

Para JSON, o código seria algo assim:

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

À medida que Kotlin e seu ecossistema continuam a evoluir, fique de olho na documentação oficial e nos recursos da comunidade para as últimas novidades sobre suporte a YAML e bibliotecas.