This library adds YAML support to kotlinx.serialization.
YAML version 1.2 is supported.
@Serializable
data class Team(
val leader: String,
val members: List<String>
)
val input = """
leader: Amy
members:
- Bob
- Cindy
- Dan
""".trimIndent()
val result = Yaml.default.parse(Team.serializer(), input)
println(result)
@Serializable
data class Team(
val leader: String,
val members: List<String>
)
val input = Team("Amy", listOf("Bob", "Cindy", "Dan"))
val result = Yaml.default.stringify(Team.serializer(), input)
println(result)
-
Scalars, including strings, booleans, integers and floats
-
Docker Compose-style extension fields
Specify the extension prefix by setting
extensionDefinitionPrefix
when creating an instance ofYaml
.Extensions can only be defined at the top level of a document, and only if the top level element is a map or object. Any key starting with the extension prefix must have an anchor defined and will not be included in the deserialised value.
Add the following to your Gradle build script:
implementation("com.charleskorn.kaml:kaml:<version number here>")
Check the releases page for the latest release information, and the Maven Central page for examples of how to reference the library in other build systems.
Pull requests and bug reports are always welcome!
kaml uses batect to simplify development environment setup:
- To build the library:
./batect build
- To run the tests and static analysis tools:
./batect check
- To run the tests and static analysis tools continuously:
./batect continuousCheck
Other commands are available by running ./batect --list-tasks
- YAML 1.2 Specification
- snakeyaml-engine, the YAML parser this library is based on