Study
Ktor

Content Negotiation: JSON dengan kotlinx.serialization

Penjelasan

install(ContentNegotiation) { json() } mengaktifkan serialisasi JSON OTOMATIS untuk call.receive()/call.respond() — dipasangkan dengan kotlinx.serialization (library JSON resmi Kotlin), data class ditandai @Serializable otomatis bisa langsung dikonversi bolak-balik ke/dari JSON tanpa kode manual.

Contoh Konsep

import io.ktor.serialization.kotlinx.json.*
import io.ktor.server.plugins.contentnegotiation.*
import kotlinx.serialization.json.Json

fun Application.module() {
    install(ContentNegotiation) {
        json(Json {
            prettyPrint = true
            ignoreUnknownKeys = true
        })
    }

    routing {
        // sekarang call.receive<T>() dan call.respond(objek) berfungsi otomatis untuk JSON
    }
}

Praktikum

Tulis install(ContentNegotiation) dengan konfigurasi json(Json { ignoreUnknownKeys = true }), didaftarkan sebelum blok routing di Application.module().

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

ignoreUnknownKeys = true PENTING diaktifkan untuk API production — TANPA opsi ini, kotlinx.serialization akan ERROR kalau client mengirim field JSON EKSTRA yang tidak ada di data class Kotlin-mu (mis. client versi lama mengirim field yang sudah dihapus dari API), membuat aplikasi rapuh terhadap perubahan kecil struktur data.