Kotlin:
YAML로 작업하기

방법:

Kotlin은 YAML 파싱 및 직렬화를 위한 내장 지원을 제공하지 않지만, 일반 YAML 파싱을 위한 snakeyaml과 YAML 형식 확장을 사용하는 kotlinx.serialization과 같은 인기 있는 타사 라이브러리를 사용하여 YAML 파일을 작업할 수 있습니다.

snakeyaml 사용하기

의존성:

implementation 'org.yaml:snakeyaml:1.30'

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

// 샘플 사용법
fun main() {
    readYaml("config.yaml")
}

샘플 config.yaml:

database:
  host: localhost
  port: 5432

샘플 출력:

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

kotlinx.serialization과 함께 YAML 사용하기

먼저, 적합한 YAML 지원 라이브러리가 포함된 kotlinx-serialization 라이브러리를 갖추었는지 확인하세요(사용 가능하다면, kotlinx.serialization은 주로 JSON 및 기타 형식을 직접 대상으로 합니다).

의존성:

// JSON을 위한 것(설명용, YAML 지원이나 대체 라이브러리 확인)
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2'

직렬화 가능한 데이터 클래스 정의하기:

import kotlinx.serialization.Serializable

@Serializable
data class Config(
    val database: Database
)

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

글을 쓰는 시점에서, kotlinx.serialization에서의 직접적인 YAML 지원은 제한적일 수 있거나 발전 중일 수 있습니다. snakeyaml을 사용하여 YAML을 JSON으로 변환한 다음 kotlinx.serialization으로 JSON을 파싱하는 중간 표현을 사용해야 하거나 kotlinx.serialization과 호환되는 커뮤니티 주도의 YAML 직렬화 프로젝트를 찾아야 할 수도 있습니다.

JSON의 경우 코드는 다음과 같습니다:

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

Kotlin과 그 생태계가 계속 발전함에 따라, YAML 지원 및 라이브러리의 최신 소식을 위해 공식 문서와 커뮤니티 리소스를 주시하세요.