Saya ingin dapat mengakses properti dari string JSON dalam metode tindakan Java saya. String tersedia hanya dengan mengatakan myJsonString = object.getJson()
. Di bawah ini adalah contoh bentuk string:
{
'title': 'ComputingandInformationsystems',
'id': 1,
'children': 'true',
'groups': [{
'title': 'LeveloneCIS',
'id': 2,
'children': 'true',
'groups': [{
'title': 'IntroToComputingandInternet',
'id': 3,
'children': 'false',
'groups': []
}]
}]
}
Dalam string ini setiap objek JSON berisi larik objek JSON lainnya. Tujuannya adalah untuk mengekstrak daftar ID di mana objek tertentu yang memiliki properti grup yang berisi objek JSON lainnya. Saya melihat Google Gson sebagai plugin JSON potensial. Adakah yang bisa menawarkan beberapa bentuk panduan tentang bagaimana saya dapat menghasilkan Java dari string JSON ini?
Jawaban:
Google Gson mendukung obat generik dan kacang bersarang. Dalam
[]
JSON mewakili array dan harus memetakan ke koleksi Java sepertiList
atau hanya array Java biasa. Dalam{}
JSON mewakili objek dan harus memetakan ke JawaMap
atau hanya beberapa kelas JavaBean.Anda memiliki objek JSON dengan beberapa properti yang
groups
propertinya mewakili array objek bersarang dengan tipe yang sama. Ini dapat diuraikan dengan Gson dengan cara berikut:Cukup sederhana, bukan? Hanya memiliki JavaBean yang cocok dan panggilan
Gson#fromJson()
.Lihat juga:
sumber
Bewaaaaare dari Gson! Ini sangat keren, sangat hebat, tetapi yang kedua Anda ingin melakukan apa pun selain objek sederhana, Anda bisa dengan mudah perlu mulai membangun serializers Anda sendiri (yang tidak terlalu sulit).
Juga, jika Anda memiliki larik Objek, dan Anda membatalkan beberapa json ke dalam larik Objek, jenis sebenarnya HILANG! Objek penuh bahkan tidak akan disalin! Gunakan XStream .. Yang, jika menggunakan jsondriver dan mengatur pengaturan yang tepat, akan menyandikan tipe jelek ke json yang sebenarnya, sehingga Anda tidak kehilangan apa pun. Harga kecil untuk dibayar (jelek json) untuk serialisasi yang benar.
Perhatikan bahwa Jackson memperbaiki masalah ini, dan lebih cepat daripada GSON.
sumber
Anehnya, satu-satunya prosesor JSON yang layak disebutkan sejauh ini adalah GSON.
Berikut ini pilihan yang lebih baik:
EDIT (Agustus / 2013):
Satu lagi untuk dipertimbangkan:
sumber
Atau dengan Jackson:
sumber
Jika, dengan perubahan apa pun, Anda berada dalam aplikasi yang sudah menggunakan http://restfb.com/ maka Anda dapat melakukannya:
dll.
sumber
Mudah dan bekerja kode java untuk mengkonversi
JSONObject
keJava Object
Employee.java
LoadFromJSON.java
sumber
sumber
Jika Anda menggunakan segala jenis peta khusus dengan kunci atau nilai-nilai juga dari peta khusus, Anda akan menemukan itu tidak dimaksudkan oleh penerapan google.
sumber
Apa yang salah dengan barang standar?
sumber
Cobalah:
https://github.com/RichardHightower/boon
Itu jahat cepat:
https://github.com/RichardHightower/json-parsers-benchmark
Jangan mengambil kata-kata saya untuk itu ... lihat patokan gatling.
https://github.com/gatling/json-parsers-benchmark
(Hingga 4x adalah beberapa kasus, dan keluar dari tes 100-an. Ini juga memiliki mode indeks overlay yang bahkan lebih cepat. Ini masih muda tetapi sudah memiliki beberapa pengguna.)
Ini dapat mengurai JSON ke Maps dan Daftar lebih cepat daripada lib lainnya dapat mengurai ke JSON DOM dan itu tanpa mode Indeks Overlay. Dengan mode Overlay Indeks Boon, bahkan lebih cepat.
Ini juga memiliki mode JSON lax yang sangat cepat dan mode parser PLIST. :) (dan memiliki memori super rendah, langsung dari mode byte dengan pengkodean UTF-8 on the fly).
Ini juga memiliki mode JSON ke JavaBean tercepat juga.
Ini baru, tetapi jika kecepatan dan API sederhana adalah apa yang Anda cari, saya tidak berpikir ada API yang lebih cepat atau lebih minimalis.
sumber
Bergantung pada format input JSON (string / file) membuat jSONString. Contoh objek kelas Pesan yang sesuai dengan JSON dapat diperoleh seperti di bawah ini:
Message msgFromJSON = ObjectMapper baru (). ReadValue (jSONString, Message.class);
sumber
Cara termudah adalah Anda dapat menggunakan metode nilai konversi lunak yang merupakan metode khusus di mana Anda dapat mengkonversi jsonData ke kelas Dto spesifik Anda.
sumber