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 지원 및 라이브러리의 최신 소식을 위해 공식 문서와 커뮤니티 리소스를 주시하세요.