Apa cara terbaik untuk mengonversi kode JSON seperti ini:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
dalam Java Map di mana salah satu kuncinya (field1, field2) dan nilai untuk bidang tersebut adalah (value1, value2).
Ada ide? Haruskah saya menggunakan Json-lib untuk itu? Atau lebih baik jika saya menulis parser sendiri?
java
json
parsing
collections
David Santamaria
sumber
sumber
Jawaban:
Saya harap Anda bercanda tentang menulis parser Anda sendiri. :-)
Untuk pemetaan sederhana seperti itu, sebagian besar alat dari http://json.org (bagian java) akan berfungsi. Untuk salah satu dari mereka (Jackson https://github.com/FasterXML/jackson-databind/#5-minute-tutorial-streaming-parser-generator ), Anda akan melakukan:
(di mana JSON_SOURCE adalah File, input stream, reader, atau String konten json)
sumber
Map<String,Object> result = mapper.readValue(source, Map.class)
.Menggunakan perpustakaan GSON:
Gunakan kode berikut:
sumber
TypeToken<Map<String, Map>>
:-)Saya suka perpustakaan google gson .
Ketika Anda tidak tahu struktur json. Kamu bisa memakai
dan kemudian kamu bisa bekerja dengan json. mis. cara mendapatkan "value1" dari gson Anda:
sumber
Gunakan JSON lib Eg http://www.json.org/java/
sumber
Posting saya dapat bermanfaat bagi orang lain, jadi bayangkan Anda memiliki peta dengan objek spesifik dalam nilai, sesuatu seperti itu:
Untuk mem-parsing file JSON ini dengan pustaka GSON, mudah: jika proyek Anda dicabut
Kemudian gunakan cuplikan ini:
POJO terkait harus seperti itu:
Semoga ini bisa membantu!
sumber
Dengan cara ini berfungsi seperti Peta ...
sumber
JsonMap implements Map<String,Object
untuk membungkus JSONObject. maka Anda mendapatkanMap
antarmuka yang benar .Saya melakukannya dengan cara ini. Itu mudah.
sumber
sumber
Perpustakaan JsonTools sangat lengkap. Itu dapat ditemukan di Github .
sumber
Dengan google's Gson 2.7 (mungkin versi sebelumnya juga, tapi saya menguji 2.7) sesederhana:
Yang mengembalikan Peta tipe
class com.google.gson.internal.LinkedTreeMap
dan bekerja secara rekursif pada objek bersarang.sumber
Satu lagi alternatif adalah json-sederhana yang dapat ditemukan di Maven Central :
Artefaknya 24kbytes, tidak memiliki dependensi runtime lainnya.
sumber
null
kembali dari string JSON sederhana di mana salah satu nilai adalah array dari string.Jika Anda menggunakan org.json, JSONObject memiliki metode
toMap()
. Anda dapat dengan mudah melakukan:sumber
sumber
Garis bawah-javaPustaka dapat mengonversi string json menjadi peta hash. Saya adalah pengelola proyek.
Contoh kode:
sumber
Jika Anda membutuhkan Java murni tanpa dependensi apa pun, Anda dapat menggunakan build di Nashorn API dari Java 8. Ini tidak digunakan lagi di Java 11.
Ini bekerja untuk saya:
Penggunaan sampel
JSON:
Kode:
sumber
Coba kode ini:
sumber
JSON ke Peta selalu akan menjadi tipe data string / objek. saya memiliki lib GSON dari google.
bekerja dengan sangat baik dan JDK 1.5 adalah persyaratan minimum.
sumber