DokumenGambarMediaAlat PDF

JSON ke Kotlin Data Class

Hasilkan Kotlin data class dari JSON, gratis, di browser Anda.

Processed in your browser

Dari JSON ke Kotlin Data Class dalam hitungan detik

Siap untuk Android dan Kotlin

Menghasilkan kode yang kompatibel dengan Retrofit, kotlinx.serialization, dan Room. Tempel langsung ke proyek Anda.

100% pribadi

JSON API Anda tidak pernah meninggalkan browser. Tanpa pendaftaran, tanpa telemetri.

Tipe yang benar

Menyimpulkan String, Int, Long, Double, Boolean, List, dan tipe nullable dengan ?. Penumpukan penuh didukung.

Instan

Pembuatan secara real time saat Anda mengetik. Tanpa tombol, tanpa menunggu.

Tiga langkah, tanpa kerumitan

1

Tempel JSON Anda

Tempel JSON dari API atau file konfigurasi Anda. Bisa berupa objek bersarang atau array.

2

Pembuatan instan

Alat ini menghasilkan Kotlin data class secara otomatis dengan tipe yang disimpulkan dan anotasi serialisasi.

3

Salin kodenya

Salin data class yang dihasilkan dan gunakan langsung di proyek Android atau Kotlin Anda.

Ada pertanyaan?

Data class adalah fitur khusus Kotlin yang secara otomatis menghasilkan metode equals(), hashCode(), toString(), dan copy() berdasarkan properti yang dideklarasikan dalam konstruktor utama. Ini ideal untuk merepresentasikan model data, terutama respons REST API, karena menghilangkan boilerplate yang di Java harus ditulis secara manual atau menggunakan Lombok.

Secara default, properti val (tidak berubah) dihasilkan, yang merupakan praktik yang direkomendasikan di Kotlin untuk model data. val berarti nilai tidak dapat ditetapkan ulang setelah inisialisasi, membuat objek lebih dapat diprediksi dan aman untuk thread. Gunakan var hanya jika Anda perlu mengubah objek setelah dibuat.

Ya. Anotasi @Serializable dari kotlinx.serialization, library serialisasi JSON resmi Kotlin, ditambahkan. @SerialName juga ditambahkan ketika nama field JSON berbeda dari konvensi camelCase Kotlin, misalnya ketika JSON menggunakan snake_case.

Ketika nilai dalam JSON adalah null, atau ketika sebuah field tidak ada di semua objek dalam array, properti dihasilkan sebagai tipe nullable menggunakan operator ?. Misalnya, String? alih-alih String. Di Kotlin, perbedaan antara tipe nullable dan non-nullable adalah bagian dari sistem tipe dan compiler memverifikasinya saat kompilasi.

Dalam pengembangan Android, Kotlin data class terutama digunakan untuk memodelkan respons REST API dengan Retrofit, menyimpan data di database lokal dengan Room, melakukan serialisasi objek untuk diteruskan antara Activity/Fragment sebagai Parcelable, dan sebagai model dalam arsitektur MVVM atau MVI. Sejak Google mengadopsi Kotlin sebagai bahasa resmi untuk Android pada 2019, data class adalah standar de facto.

Kotlin di Android, kotlinx.serialization, dan Retrofit untuk API type-safe

Pada Mei 2019, Google mengumumkan bahwa Kotlin menjadi bahasa yang diutamakan untuk pengembangan Android, menggeser Java dari posisi pertama. Sejak itu, adopsi Kotlin di Android telah berkembang hingga lebih dari 95% aplikasi dalam top 1000 Google Play menggunakan Kotlin. Data class adalah salah satu fitur yang paling dihargai oleh pengembang Android justru karena menghilangkan boilerplate dari POJO Java.

kotlinx.serialization adalah library serialisasi resmi JetBrains untuk Kotlin. Berbeda dari Gson atau Moshi, library ini sepenuhnya native Kotlin, bekerja dengan kompilasi Kotlin Multiplatform Mobile, mendukung coroutine secara native, dan menghasilkan kode saat kompilasi alih-alih menggunakan refleksi saat runtime. Anotasi @Serializable pada data class sudah cukup untuk melakukan serialisasi dan deserialisasi JSON.

Retrofit yang dikembangkan oleh Square adalah library paling populer untuk mengonsumsi REST API di Android. Dikombinasikan dengan kotlinx.serialization atau Gson sebagai konverter, library ini memungkinkan pendefinisian antarmuka API dengan anotasi @GET, @POST, dan @Body, kemudian Retrofit secara otomatis menghasilkan implementasinya. Data class yang dihasilkan alat ini langsung kompatibel dengan Retrofit sebagai tipe kembalian atau tipe parameter request body.