Yaml #
Penanganan YAML (YAML Ain’t Markup Language) dalam Kotlin sering digunakan untuk konfigurasi dan serialisasi data. YAML adalah format serialisasi data yang lebih mudah dibaca manusia dibandingkan dengan JSON atau XML. Beberapa pustaka yang dapat digunakan di Kotlin untuk menangani YAML termasuk SnakeYAML dan kotlinx.serialization (dengan ekstensi tambahan).
SnakeYAML #
SnakeYAML adalah pustaka Java yang populer untuk parsing dan penulisan YAML. Karena Kotlin berjalan di atas JVM, Anda dapat dengan mudah menggunakan pustaka ini dalam proyek Kotlin.
Menambahkan Dependensi SnakeYAML #
Untuk menggunakan SnakeYAML, tambahkan dependensi berikut di file build.gradle.kts
:
dependencies {
implementation("org.yaml:snakeyaml:2.0")
}
Contoh Penggunaan SnakeYAML #
-
Mengonversi YAML ke Objek
import org.yaml.snakeyaml.Yaml import java.io.File data class Person(val name: String, val age: Int) fun main() { val yaml = Yaml() val inputStream = File("person.yaml").inputStream() val person = yaml.loadAs(inputStream, Person::class.java) println(person) // Output: Person(name=Alice, age=30) }
Isi file
person.yaml
:name: Alice age: 30
-
Mengonversi Objek ke YAML
import org.yaml.snakeyaml.DumperOptions import org.yaml.snakeyaml.Yaml import java.io.File data class Person(val name: String, val age: Int) fun main() { val person = Person("Bob", 25) val options = DumperOptions() options.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK val yaml = Yaml(options) val outputStream = File("person_output.yaml").outputStream() yaml.dump(person, outputStream) }
Isi file
person_output.yaml
setelah menjalankan kode di atas:name: Bob age: 25
kotlinx.serialization dengan YAML #
kotlinx.serialization
adalah pustaka resmi JetBrains untuk serialisasi dan deserialisasi data di Kotlin. Namun, kotlinx.serialization
tidak mendukung YAML secara langsung. Anda dapat menggunakan ekstensi tambahan atau pustaka lain untuk menambahkan dukungan YAML.
Salah satu pustaka eksternal yang memungkinkan integrasi YAML dengan kotlinx.serialization
adalah kotlinx-serialization-yaml
.
Menambahkan Dependensi kotlinx.serialization-yaml #
Untuk menggunakan kotlinx.serialization-yaml
, tambahkan dependensi berikut di file build.gradle.kts
:
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-yaml:0.1.0")
}
Contoh Penggunaan kotlinx.serialization-yaml #
-
Mengonversi YAML ke Objek
import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.yaml.Yaml import kotlinx.serialization.yaml.decodeFromString @Serializable data class Person(val name: String, val age: Int) fun main() { val yaml = Yaml { ignoreUnknownKeys = true } val yamlData = """ name: Charlie age: 28 """.trimIndent() val person = yaml.decodeFromString<Person>(yamlData) println(person) // Output: Person(name=Charlie, age=28) }
-
Mengonversi Objek ke YAML
import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString import kotlinx.serialization.yaml.Yaml @Serializable data class Person(val name: String, val age: Int) fun main() { val person = Person("Diana", 35) val yaml = Yaml { prettyPrint = true } val yamlData = yaml.encodeToString(person) println(yamlData) }
Output YAML dari kode di atas:
name: Diana age: 35
Kesimpulan #
Di Kotlin, penanganan YAML dapat dilakukan menggunakan pustaka seperti SnakeYAML atau dengan kotlinx.serialization
menggunakan ekstensi tambahan.
- SnakeYAML: Pustaka Java yang mudah digunakan untuk parsing dan penulisan YAML.
- kotlinx.serialization dengan YAML: Menawarkan integrasi dengan
kotlinx.serialization
, tetapi memerlukan ekstensi tambahan.
Memilih pustaka yang tepat bergantung pada kebutuhan aplikasi Anda, seperti kemudahan penggunaan, dukungan format, dan fitur yang dibutuhkan.