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().
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.