Tidak benar, karena saya ingin membuat objek json dari string json, jawaban yang diberikan oleh dogbane menunjukkan jalur yang benar untuk menjawab.
Tn. Sajid Shaikh
Kedua jawaban Mappan dan dogbane benar tetapi mereka menggunakan modul yang berbeda. Anda harus berhati-hati untuk mengimpor modul yang benar untuk masing-masing karena ada banyak modul JSONObject.
Arashsoft
Saya mencoba dengan perpustakaan GSON. Silakan periksa tautan ini .
Saya mencoba dengan seperti itu JSONObject js = JSONObject baru (jsonstring); tetapi ini menunjukkan kesalahan. on jsonstring
Mr. Sajid Shaikh
29
dia mendapat kesalahan karena dia tidak menggunakan org.json, dia menggunakan google-gson yang tidak berfungsi seperti itu.
Gubatron
2
@ Gubatron Terima kasih Bung Anda benar saya baru saja mengunduhnya dan membuat jar jadi sekarang berfungsi dengan baik.
Tn. Sajid Shaikh
3
@dogbane Bagaimana jika saya tidak tahu struktur string. Lebih jelasnya, bagaimana saya bisa mengubah jsonString yang dihasilkan dinamis ke jsonObject?
Saumyaraj
70
Dengan menggunakan google-gson Anda dapat melakukannya seperti ini:JsonObject obj = new JsonParser().parse(jsonString).getAsJsonObject();
Dan bisakah Anda menyebutkan paket mana yang akan diimpor untuk hal yang sama?
gonephishing
10
Ini bekerja untuk saya dengan:import org.json.simple.JSONObject
Mafro34
1
Versi 1.1.1 dari json-simple tampaknya memiliki beberapa masalah. Di atas memberikan "Unhandled Exception" untuk parser.parse(dan menginginkan try-catch atau throws. Tetapi ketika Anda menambahkan salah satu, itu memberikan Unhandled exception type ParseExceptionkesalahan, atau kesalahan NoClassDefFound untuk ParseException org.json.simple.parserbahkan ketika Anda memiliki json-sederhana dalam depedensi Maven dan terlihat jelas di perpustakaan proyek.
Juha Untinen
2
org.json adalah perpustakaan bukti-konsep. ini adalah salah satu yang terburuk dalam hal kinerja dan fitur. Orang harus melihat set fitur dan kinerja json lib sebelum memilih. Lihat patokan ini yang saya lakukan menggunakan JMH: github.com/fabienrenaud/java-json-benchmark Jelas ini menunjukkan jackson lebih cepat dari yang lain dan 5 hingga 6 kali lebih cepat dari org.json.
fabien
5
Parser JSONParser = JSONParser baru (); tampaknya depriasi
"Jika Anda meminta untuk memproses di sisi klien, itu tergantung pada bahasa pemrograman Anda. Misalnya dengan Java Anda dapat menggunakan google-gson" Saya pikir Anda mungkin berarti "server" daripada "klien" di sana. Dan dia menandai pertanyaannya "Java".
TJ Crowder
+1. Saya telah menggunakan Gson dalam proyek 4-5 sekarang, dalam konteks yang sangat berbeda, sisi server dan klien (juga di aplikasi Android), dan itu tidak pernah mengecewakan saya. Lib sangat bagus & bersih.
Jonik
Jika Anda ingin menggunakan gson tetapi tidak memiliki kelas POJO yang ditentukan sebelumnya (yaitu Anda memiliki json generik tanpa struktur yang ditentukan sebelumnya), jawaban ini dapat membantu - stackoverflow.com/questions/4110664/…
Leandro David
40
Ada berbagai serializers dan deserializer Java JSON yang ditautkan dari beranda JSON .
Namun, saya pikir pertanyaan Anda lebih seperti, Bagaimana saya mengakhiri dengan objek JSONObject aktual dari String JSON.
Saya sedang melihat api google-json dan tidak dapat menemukan sesuatu yang lurus ke depan seperti api org.json yang mungkin apa yang ingin Anda gunakan jika Anda sangat membutuhkan menggunakan barebones JSONObject.
Saya pikir keindahan google-gson adalah Anda tidak perlu berurusan dengan JSONObject. Anda hanya mengambil json, lulus kelas yang ingin deserialize ke, dan atribut kelas Anda akan dicocokkan dengan JSON, tetapi sekali lagi, semua orang memiliki persyaratan sendiri, mungkin Anda tidak mampu membayar mewah untuk memiliki kelas yang telah dipetakan pada sisi deserializing karena hal-hal mungkin terlalu dinamis di sisi Generasi JSON. Dalam hal itu gunakan saja json.org.
Codehaus Jackson - Saya telah menggunakan API yang luar biasa ini sejak 2012 untuk layanan web dan pengujian JUnit saya yang tenang. Dengan API mereka, Anda dapat:
(2) Mengubah String JSON menjadi objek JSON (JsonNode)
publicstaticJsonNode stringToJSONObject(String jsonString)throwsException{ObjectMapper jacksonObjMapper =newObjectMapper();return jacksonObjMapper.readTree(jsonString);}//Example:String jsonString ="{\"phonetype\":\"N95\",\"cat\":\"WP\"}";JsonNode jsonNode = stringToJSONObject(jsonString);Assert.assertEquals("Phonetype value not legit!","N95", jsonNode.get("phonetype").getTextValue());Assert.assertEquals("Cat value is tragic!","WP", jsonNode.get("cat").getTextValue());
Perhatikan bahwa GSON dengan deserializing antarmuka akan menghasilkan pengecualian seperti di bawah ini.
"java.lang.RuntimeException: Unable to invoke no-args constructor for interface XXX. Register an InstanceCreator with Gson for this type may fix this problem."
Sementara deserialize; GSON tidak tahu objek mana yang harus diintegrasikan untuk antarmuka itu.
Namun FlexJSON memiliki solusi ini secara inheren. sementara cerita bersambung waktu itu menambahkan nama kelas sebagai bagian dari json seperti di bawah ini.
Sekarang objadalah JSONObjectbentuk Anda yang dikonversi dari String Anda masing-masing. Ini berlaku jika Anda memiliki pasangan nama-nilai.
Untuk string, Anda dapat langsung meneruskan ke konstruktor JSONObject. Jika itu akan menjadi valid json String, maka oke kalau tidak itu akan membuang pengecualian.
Secara harfiah melakukan apa yang Anda tulis: user.put("email", "[email protected]")memicu pengecualian yang tidak tertangani.
Sebastialonso
1
@Sebastialonso Ya, Anda perlu menangkap pengecualian. Seperti ini:try {JSONObject jObj = new JSONObject();} catch (JSONException e) {Log.e("MYAPP", "unexpected JSON exception", e);// Do something to recover.}
TheLittleNaruto
@vidya Tidak bukan. Pertimbangkan untuk membandingkannya lagi.
Jawaban:
Menggunakan perpustakaan org.json :
sumber
JsonObject obj = new JsonParser().parse(jsonString).getAsJsonObject();
Kepada siapa pun yang masih mencari jawaban:
sumber
import org.json.simple.JSONObject
parser.parse(
dan menginginkan try-catch atau throws. Tetapi ketika Anda menambahkan salah satu, itu memberikanUnhandled exception type ParseException
kesalahan, atau kesalahan NoClassDefFound untuk ParseExceptionorg.json.simple.parser
bahkan ketika Anda memiliki json-sederhana dalam depedensi Maven dan terlihat jelas di perpustakaan proyek.Anda bisa menggunakannya
google-gson
. Detail:Contoh Objek
(Serialisasi)
Perhatikan bahwa Anda tidak dapat membuat serial objek dengan referensi melingkar karena hal itu akan menghasilkan rekursi tak terbatas.
(Deserialisasi)
Contoh lain untuk Gson:
Gson mudah dipelajari dan diimplementasikan, yang perlu Anda ketahui adalah dua metode berikut:
-> toJson () - mengonversi objek java ke format JSON
-> fromJson () - mengubah JSON menjadi objek java
Keluaran
Sumber:
Halaman Beranda Proyek Google Gson
Panduan Pengguna Gson
Contoh
sumber
Ada berbagai serializers dan deserializer Java JSON yang ditautkan dari beranda JSON .
Pada tulisan ini, ada 22 ini:
... tapi tentu saja daftar bisa berubah.
sumber
Solusi Java 7
;
sumber
Untuk mengkonversi
String
menjadiJSONObject
Anda hanya perlu mengirimkanString
instance ke Konstruktor dariJSONObject
.Misalnya:
sumber
Saya suka menggunakan google-gson untuk ini, dan itu tepatnya karena saya tidak perlu bekerja dengan JSONObject secara langsung.
Dalam hal ini saya akan memiliki kelas yang akan sesuai dengan properti Obyek JSON Anda
Namun, saya pikir pertanyaan Anda lebih seperti, Bagaimana saya mengakhiri dengan objek JSONObject aktual dari String JSON.
Saya sedang melihat api google-json dan tidak dapat menemukan sesuatu yang lurus ke depan seperti api org.json yang mungkin apa yang ingin Anda gunakan jika Anda sangat membutuhkan menggunakan barebones JSONObject.
http://www.json.org/javadoc/org/json/JSONObject.html
Dengan org.json.JSONObject (API lain yang sama sekali berbeda) Jika Anda ingin melakukan sesuatu seperti ...
Saya pikir keindahan google-gson adalah Anda tidak perlu berurusan dengan JSONObject. Anda hanya mengambil json, lulus kelas yang ingin deserialize ke, dan atribut kelas Anda akan dicocokkan dengan JSON, tetapi sekali lagi, semua orang memiliki persyaratan sendiri, mungkin Anda tidak mampu membayar mewah untuk memiliki kelas yang telah dipetakan pada sisi deserializing karena hal-hal mungkin terlalu dinamis di sisi Generasi JSON. Dalam hal itu gunakan saja json.org.
sumber
Anda harus mengimpor org.json
sumber
String ke JSON menggunakan
Jackson
dengancom.fasterxml.jackson.databind
:Dengan asumsi json-string Anda mewakili sebagai ini: jsonString = {"phonetype": "N95", "cat": "WP"}
sumber
Jika Anda menggunakan http://json-lib.sourceforge.net (net.sf.json.JSONObject)
itu sangat mudah:
atau
dapatkan nilai kemudian dengan json.getString (param), json.getInt (param) dan seterusnya.
sumber
Untuk mengkonversi string ke json dan sengatannya seperti json. {"phonetype": "N95", "cat": "WP"}
sumber
Gunakan JsonNode dari fastxml untuk Parsing Json Generik. Ini secara internal membuat Peta nilai kunci untuk semua input.
Contoh:
masukan String:
sumber
Tidak perlu menggunakan perpustakaan eksternal.
Anda dapat menggunakan kelas ini sebagai gantinya :) (menangani daftar genap, daftar bersarang, dan json)
Untuk mengonversi string JSON Anda ke hashmap gunakan ini:
sumber
Codehaus Jackson - Saya telah menggunakan API yang luar biasa ini sejak 2012 untuk layanan web dan pengujian JUnit saya yang tenang. Dengan API mereka, Anda dapat:
(1) Konversi JSON String ke Java bean
(2) Mengubah String JSON menjadi objek JSON (JsonNode)
(3) Konversi kacang Jawa ke String JSON
REFS:
Codehaus Jackson
JsonNode API - Cara menggunakan, menavigasi, mengurai dan mengevaluasi nilai-nilai dari objek JsonNode
Tutorial - Tutorial sederhana cara menggunakan Jackson untuk mengonversi string JSON ke JsonNode
sumber
Perhatikan bahwa GSON dengan deserializing antarmuka akan menghasilkan pengecualian seperti di bawah ini.
Sementara deserialize; GSON tidak tahu objek mana yang harus diintegrasikan untuk antarmuka itu.
Ini diselesaikan entah bagaimana di sini .
Namun FlexJSON memiliki solusi ini secara inheren. sementara cerita bersambung waktu itu menambahkan nama kelas sebagai bagian dari json seperti di bawah ini.
Jadi JSON akan menjadi beberapa; tetapi Anda tidak perlu menulis
InstanceCreator
yang diperlukan di GSON.sumber
Menggunakan org.json
Jika Anda memiliki String yang berisi teks format JSON, maka Anda bisa mendapatkan Objek JSON dengan langkah-langkah berikut:
Sekarang untuk mengakses fonetype
sumber
Untuk mengatur objek json tunggal ke daftar yaitu
masuk ke
List<Location>
menggunakan
jackson.mapper-asl-1.9.7.jar
sumber
sumber
Better Go dengan cara yang lebih sederhana dengan menggunakan
org.json
lib. Lakukan saja pendekatan yang sangat sederhana seperti di bawah ini:Sekarang
obj
adalahJSONObject
bentuk Anda yang dikonversi dari String Anda masing-masing. Ini berlaku jika Anda memiliki pasangan nama-nilai.Untuk string, Anda dapat langsung meneruskan ke konstruktor
JSONObject
. Jika itu akan menjadi validjson String
, maka oke kalau tidak itu akan membuang pengecualian.sumber
user.put("email", "[email protected]")
memicu pengecualian yang tidak tertangani.try {JSONObject jObj = new JSONObject();} catch (JSONException e) {Log.e("MYAPP", "unexpected JSON exception", e);// Do something to recover.}