unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Yaml

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 #

  1. 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
    
  2. 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 #

  1. 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)
    }
    
  2. 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.

« JSON
MySQL »