Bagaimana cara mengubah atau membuang hashmap ke objek JSON di Java, dan kembali mengonversi objek JSON ke string JSON?
286
Kamu bisa memakai:
new JSONObject(map);
Perhatian: Ini hanya akan berfungsi untuk aMap<String, String>!
Fungsi lain yang bisa Anda dapatkan dari dokumentasinya
http://stleary.github.io/JSON-java/index.html
Map
ke dalamJSONObject
tapi bagaimana Anda bisa mendapatkan peta ini dari JSONObject?Gson juga dapat digunakan untuk membuat serialisasi objek kompleks yang sewenang-wenang.
Inilah cara Anda menggunakannya:
Gson
akan secara otomatis mengonversi koleksi keJSON
array. Gson dapat membuat serial bidang pribadi dan secara otomatis mengabaikan bidang sementara.sumber
Contoh menggunakan json
keluaran::
Anda juga dapat mencoba menggunakan GSON Google. GSON Google adalah perpustakaan terbaik yang tersedia untuk mengonversi Java Objects menjadi representasi JSON mereka.
http://code.google.com/p/google-gson/
sumber
2
dilakukan dijson.toString(
2`)Anda dapat mengonversi
Map
untukJSON
menggunakanJackson
sebagai berikut:Ketergantungan Maven untuk
Jackson
:Jika Anda menggunakan
JSONObject
perpustakaan, Anda dapat mengonversi peta menjadiJSON
sebagai berikut:Ketergantungan Maven untuk
JSONObject
:Semoga ini bisa membantu. Selamat coding.
sumber
Dalam kasus saya, saya tidak ingin ada ketergantungan. Menggunakan Java 8 Anda bisa mendapatkan JSON sebagai string ini sesederhana ini:
sumber
"
, ini rusakAnda bisa menghitung peta dan menambahkan pasangan nilai kunci ke JSONObject
Metode :
sumber
Pustaka underscore-java dapat mengonversi peta hash atau daftar larik menjadi json dan sebaliknya.
sumber
Terlambat ke pesta tetapi di sini adalah GSON saya penulis adhoc untuk membuat serial hashmap. Saya harus menulis peta pasangan kunci-nilai sebagai atribut string json, berharap satu spesifik menjadi tipe integer. Saya tidak ingin membuat pembungkus JavaBean khusus untuk penggunaan sederhana ini.
Kelas GSON JsonWriter mudah digunakan kelas serializer yang berisi beberapa fungsi writer.value () sangat diketik.
Jika tidak ada jenis kustom yang diperlukan, saya bisa menggunakan fungsi toJson () saja. perpustakaan gson-2.2.4.jar hanya di bawah 190KB tanpa ketergantungan brutal. Mudah digunakan pada aplikasi servlet khusus atau aplikasi mandiri tanpa integrasi kerangka besar.
sumber
Ini biasanya karya perpustakaan Json, Anda sebaiknya tidak mencoba melakukannya sendiri. Semua pustaka json harus mengimplementasikan apa yang Anda minta, dan Anda dapat menemukan daftar pustaka Java Json di json.org , di bagian bawah halaman.
sumber
Saya menemukan cara lain untuk menanganinya.
Semoga ini membantu.
Terima kasih.
sumber
Jika Anda perlu menggunakannya dalam kode.
sumber
Bagi yang menggunakan
org.json.simple.JSONObject
, Anda bisa mengonversi peta menjadi Json String dan menguraikannya untuk mendapatkanJSONObject
.sumber
Lebih baik terlambat daripada tidak pernah sama sekali. Saya menggunakan GSON untuk mengonversi daftar HashMap ke string jika jika Anda ingin memiliki daftar serial.
Ini
json
menghasilkan[{"key":"value","key":"value","key":"value"}]
sumber
Gson
.Di sini solusi single-line saya dengan GSON:
sumber
Solusi ini bekerja dengan JSONs kompleks:
sumber
kami menggunakan Gson.
sumber
Anda dapat menggunakan XStream - ini sangat berguna. Lihat contoh di sini
sumber
Jika Anda menggunakan
net.sf.json.JSONObject
maka Anda tidak akan menemukanJSONObject(map)
konstruktor di dalamnya. Anda harus menggunakanpublic static JSONObject fromObject( Object object )
metode ini. Metode ini menerima string berformat JSON, Maps, DynaBeans dan JavaBeans.JSONObject jsonObject = JSONObject.fromObject(myMap);
sumber
Jika Anda menggunakan objek yang kompleks, Anda harus menerapkan enableComplexMapKeySerialization () , seperti yang dinyatakan dalam https://stackoverflow.com/a/24635655/2914140 dan https://stackoverflow.com/a/26374888/2914140 .
Output akan menjadi:
sumber
Tidak perlu parsing pustaka Gson atau JSON. Hanya menggunakan
new JSONObject(Map<String, JSONObject>).toString()
, misalnya:sumber
sumber
Jika Anda tidak benar-benar membutuhkan HashMap maka Anda dapat melakukan sesuatu seperti itu:
Keluaran:
sumber
HashMap
, dan ini tidak menjawab itu.Saya menggunakan fastjson Alibaba, mudah dan sederhana:
dan impor:
Kemudian:
Semuanya baik-baik saja.
sumber
Jika Anda menggunakan JSR 374: Java API untuk JSON Processing (javax json) Ini sepertinya melakukan trik:
sumber
Anda dapat menggunakan Gson . Pustaka ini menyediakan metode sederhana untuk mengonversi objek Java ke objek JSON dan sebaliknya.
Contoh:
Anda dapat menggunakan GsonBuilder saat Anda perlu mengatur opsi konfigurasi selain yang standar. Pada contoh di atas, proses konversi juga akan membuat cerita bersambung atribut nol dari objek.
Namun, pendekatan ini hanya berfungsi untuk tipe non-generik. Untuk tipe generik Anda perlu menggunakan toJson (objek, Type).
Informasi lebih lanjut tentang Gson di sini .
Ingat bahwa objek harus mengimplementasikan antarmuka Serializable .
sumber
ini bekerja untuk saya:
sumber
Jalan gson untuk peta dan daftar sedikit lebih kompleks menggunakan metode TypeToken.getParameterized :
Kami memiliki peta yang terlihat seperti ini:
Kami mendapatkan Type menggunakan metode getParameter yang disebutkan di atas seperti ini:
Dan kemudian gunakan objek Gson dari metode Json seperti ini menggunakan objek mapOfList seperti ini:
Objek yang disebutkan NewFile terlihat seperti ini:
JSON deserialized terlihat seperti ini:
sumber
Saya menghadapi masalah yang sama ketika deserializing Respon dari perintah khusus di selenium. Responsnya adalah json, tetapi selenium menerjemahkannya secara internal ke java.util.HashMap [String, Object]
Jika Anda terbiasa dengan scala dan menggunakan play-API untuk JSON, Anda dapat mengambil manfaat dari ini:
Deskripsi kode kecil:
Kode secara rekursif melintasi HashMap hingga tipe dasar (String, Integer, Boolean) ditemukan. Tipe dasar ini dapat langsung dibungkus menjadi JsObject. Ketika rekursi dibuka, deepmerge menggabungkan objek yang dibuat.
'@blocked' menangani peringatan penghapusan tipe.
sumber
Konversikan terlebih dahulu semua objek Anda menjadi String yang valid
Kemudian masukkan seluruh peta ke dalam org.json.JSONObject
Sekarang Anda bisa mendapatkan JSON hanya dengan memanggil toString objek
Buat JSONObject baru
Atau sebagai array byte untuk mengirim melalui HTTP
sumber