Kotlin:
YAML を操作する
どのようにして:
KotlinにはYAMLの解析やシリアライゼーションのための組み込みサポートはありませんが、snakeyaml
(一般的なYAML解析用)やkotlinx.serialization
(YAML形式の拡張を使用)などの人気のあるサードパーティライブラリを利用して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およびその他の形式を直接対象としていますが、使用可能であれば、YAMLサポートや代替ライブラリもチェックしてください)。
依存関係:
// 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サポートとライブラリの最新情報について公式ドキュメントやコミュニティリソースをチェックし続けてください。