Saya menerima string objek JSON yang cukup dalam dari layanan yang harus saya parse ke objek JSON dan kemudian memetakannya ke kelas.
Bagaimana cara mengubah string JSON menjadi objek di Kotlin?
Setelah itu pemetaan ke kelas masing-masing, saya menggunakan StdDeserializer dari Jackson. Masalah muncul saat objek memiliki properti yang juga harus di-deserialisasi menjadi kelas. Saya tidak bisa mendapatkan pemeta objek, setidaknya saya tidak tahu caranya, di dalam deserializer lain.
Terima kasih sebelumnya atas bantuannya. Lebih disukai, secara native, saya mencoba mengurangi jumlah dependensi yang saya butuhkan jadi jika jawabannya hanya untuk manipulasi JSON dan parsing saja sudah cukup.
Jawaban:
Anda dapat menggunakan perpustakaan ini https://github.com/cbeust/klaxon
Klaxon adalah library ringan untuk mengurai JSON di Kotlin.
sumber
Tidak diragukan lagi bahwa masa depan penguraian di Kotlin adalah dengan kotlinx.serialization. Ini adalah bagian dari perpustakaan Kotlin. Ini masih pada saat penulisan dalam tahap inkubator.
https://github.com/Kotlin/kotlinx.serialization
sumber
Json
(itu umum). Selain itu, ada beberapa masalah Github terbuka dengan label bug. Jadi, masih berisiko untuk digunakan dalam produksi menurut saya (kecuali Anda bersedia meluangkan waktu untuk memperbaiki masalah potensial dan tidak berencana untuk sering memperbaruinya). Project tersebut memang menarik terutama untuk project Kotlin Multiplatform, namun masih belum stabil.Tanpa perpustakaan eksternal (di Android)
Untuk mengurai ini:
Gunakan kelas-kelas ini:
Pemakaian:
sumber
JsonObject
jika JVM Anda berjalan di bawah Java7 ( docs.oracle.com/javaee/7/api/javax/json/JsonObject.html )?Kamu bisa memakai
Gson
.Contoh
Langkah 1
Tambahkan kompilasi
Langkah 2
Konversi json ke
Kotlin Bean
(gunakan JsonToKotlinClass )Seperti ini
Json
dataKotlin Bean
LANGKAH 3
Menggunakan
Gson
sumber
{
atau[
val
properti bisa dengan mudah hilangnull
jika tidak ada di JSON. Selain itu, nilai default tidak digunakan sama sekali.Tidak yakin apakah ini yang Anda butuhkan tetapi inilah cara saya melakukannya.
Menggunakan import org.json.JSONObject:
Berikut contoh json:
{"Foods": [{"FoodName": "Apel", "Berat": "110"}]}
sumber
data class SomeClass(val param1: Int, val param2: Int)
.for (i in 0 until foodJson!!.length()) {
bukanfor (i in 0..foodJson!!.length() - 1) {
. Itu melakukan hal yang sama, dan itu lebih visualSaya pribadi menggunakan modul Jackson untuk Kotlin yang dapat Anda temukan di sini: jackson-module-kotlin .
Sebagai contoh, berikut adalah kode untuk mengurai JSON dari skilltree Path of Exile yang cukup berat (84k baris saat diformat):
Kode Kotlin:
JSON (tidak diformat): http://filebin.ca/3B3reNQf3KXJ/rawSkilltree.json
Mengingat deskripsi Anda, saya yakin itu sesuai dengan kebutuhan Anda.
sumber
Untuk mengonversi JSON ke Kotlin gunakan http://www.json2kotlin.com/
Anda juga dapat menggunakan plugin Android Studio. File> Settings, pilih
Plugins
di pohon kiri, tekan "Browse repositories ...", cari " JsonToKotlinClass ", pilih dan klik tombol hijau "Install".Setelah AS restart, Anda dapat menggunakannya. Anda dapat membuat kelas dengan
File > New > JSON To Kotlin Class (JsonToKotlinClass)
. Cara lain adalah dengan menekan Alt + K.Kemudian Anda akan melihat dialog untuk menempelkan JSON.
Pada tahun 2018 saya harus menambahkan
package com.my.package_name
di awal kelas.sumber
Pertama-tama.
Anda dapat menggunakan plugin pengonversi kelas Data JSON ke Kotlin di Android Studio untuk pemetaan JSON ke kelas POJO (kelas data kotlin). Plugin ini akan membuat anotasi kelas data Kotlin Anda sesuai dengan JSON.
Kemudian Anda dapat menggunakan pengonversi GSON untuk mengonversi JSON ke Kotlin.
Ikuti tutorial Lengkap ini: Tutorial Parsing JSON Android Kotlin
Jika Anda ingin mengurai json secara manual.
Kode untuk Parse di atas Array JSON dan objeknya di indeks 0.
sumber
http://www.jsonschema2pojo.org/ Hai, Anda dapat menggunakan situs web ini untuk mengonversi json ke pojo.
control + Alt + shift + k
Setelah itu Anda dapat secara manual mengonversi kelas model tersebut ke kelas model kotlin. dengan bantuan shortcut di atas.
sumber
Agak terlambat, tapi terserah.
Jika Anda lebih suka mengurai JSON daripada JavaScript seperti konstruksi yang menggunakan semantik Kotlin, saya merekomendasikan JSONKraken , di mana saya penulisnya.
Saran dan pendapat tentang masalah ini sangat kami hargai!
sumber
Unduh sumber deme dari sini ( Json parsing di android kotlin )
Tambahkan ketergantungan ini:
Fungsi api panggilan:
sumber