Selama proses pengembangan, Anda sering perlu bertukar data dengan sistem lain. Format pertukaran data termasuk XML, JSON, dll. JSON adalah format data ringan yang lebih efisien daripada XML. XML membutuhkan banyak tag, yang tidak diragukan lagi menempati lalu lintas jaringan. JSON melakukan pekerjaan dengan baik dalam hal ini. Mari kita lihat format JSON.
JSON dapat memiliki dua format, satu adalah format objek, dan yang lainnya adalah objek array.
{"name": "json", "alamat": "Distrik Xicheng, Beijing", "Age": 25} // String Format Objek JSON
[{"name": "json", "alamat": "distrik xicheng, beijing", "usia": 25}] // format objek data
Dari dua format di atas, kita dapat melihat bahwa satu -satunya perbedaan antara format objek dan format objek array adalah bahwa [] ditambahkan ke format objek. Kemudian lihat struktur spesifiknya. Dapat dilihat bahwa keduanya muncul dalam bentuk pasangan nilai kunci, dipisahkan oleh koma (,) di negara bagian Inggris.
Format ini juga sangat populer ketika transmisi data dilakukan di front-end dan back-end. Back-end mengembalikan string dalam format JSON. Front-end menggunakan metode JSON.PARSE () di JS untuk mengurai string JSON ke dalam objek JSON, dan kemudian traversal untuk digunakan oleh front-end.
Mari kita mulai ke topik dan perkenalkan konversi timbal balik antara objek JSON dan Java di Java.
Untuk mewujudkan transfer timbal balik antara objek JSON dan Java, Anda perlu menggunakan paket JAR pihak ketiga. Paket JSON-LIB digunakan di sini. Alamat unduhan adalah: https://sourceForge.net/projects/json-lib/. JSON-LIB membutuhkan dukungan dari lima paket: Commons-beanutils-1.8.0.jar, commons-collections-3.2.1.jar, commons-lang-2.5.jar, commons-gogging-1.1.jar, dan ezmorph-1.0.6.jar. Anda dapat mengunduhnya dari internet sendiri. Alamat unduhan tidak akan lagi diposting di sini.
JSON-LIB menyediakan beberapa kelas yang dapat menyelesaikan fungsi ini, seperti JsonObject, JsonArray. Dari nama kelas, kita dapat melihat bahwa JSONObject yang ditransformasikan harus dalam format objek, sedangkan JSONArray yang diubah harus menjadi objek array (mis., Dengan bentuk []).
1. Transfer timbal balik dari objek biasa dan string JSON
Java Object-- 》》 String
Objek Java yang normal mengacu pada kacang java di Java, yaitu kelas entitas, seperti
Paket com.cn.study.day3; siswa kelas publik {// Nama name string pribadi; // Umur private string usia; // alamat alamat string pribadi; public string getName () {return name;} public void setName (string name) {this.name = name;} public string getage () {return ever;} public void public (string) {string ever; {{{{everage {) {thage {retage {threeage () {retage {{thisage) {thise () {threame () {thise () {retage) {thise. alamat;} public void setAddress (string address) {this.address = address;}@overridepublic string toString () {return "student [name =" + name + ", usia =" + usia + ", alamat =" + alamat + "]";}}Di atas adalah kelas entitas Java normal saya, lihat bagaimana json-lib mengubahnya menjadi bentuk string,
public static void convertObject () {siswa Stu = siswa baru (); stu.setname ("json"); stu.setage ("23"); stu.setaddress ("distrik Beijing Xicheng"); // 1. Gunakan jsonObjectJsonObject json = jsonObject.fromObject (stu); // 2. Gunakan jsonarrayjsonArray array = jsonarray.fromObject (stu); string strjson = json.toString (); string strarray = array.toString (); System.out.println ("strarson:"+strjson); out.out.println ("strarray:"++++strjson); etsprintln ("strarray:"+++strars);Saya mendefinisikan kelas entitas siswa, dan kemudian mengubahnya menjadi string JSON menggunakan JsonObject dan JsonArray masing -masing. Mari kita lihat hasil yang dicetak di bawah ini.
strjson: {"alamat": "distrik xicheng, beijing", "usia": "23", "name": "json"}
Strarray: [{"Alamat": "Distrik Xicheng, Beijing", "Age": "23", "Name": "Json"}]
Dari hasilnya, kita dapat melihat bahwa kedua metode dapat mengubah objek Java menjadi string JSON, tetapi struktur yang dikonversi berbeda.
JSON String-》》 Objek Java
Di atas menjelaskan cara mengubah objek Java menjadi string JSON. Mari kita lihat cara mengubah format string JSON menjadi objek Java.
Pertama, Anda perlu mendefinisikan dua string dalam format yang berbeda, Anda perlu menggunakan/melarikan diri dari kutipan ganda.
public static void jsonstrtoJava () {// Tentukan dua string dari format berbeda string objectstr = "{/" name/":/" json/",/" usia/":/" 24/",/" alamat/":/" distrik xicheng, beijing/"}"; arraystr = "[{/" name/":/" json/",/" use/":/" 24/",/" address/":/" Beijing Xicheng District, Beijing/"}]"; // 1. Gunakan jsonObjectJSonObject jsonObject = jsonObject.fromObject (objectStr); student stu = (siswa) jsonobject.tobean (jsonObject, student.class); // 2. Gunakan jsonarrayjsonarray jsonarray = jsonarray.fromObject (arraystr); // dapatkan elemen pertama dari objek jsonarray o = jsonarray.get (0); jsonObject jsonobject2 = jsonobject.fromObject (o); student STU2 = (student) jsonobject.tobean Student.class); System.out.println ("Stu:"+Stu); System.out.println ("Stu2:"+Stu2);}Hasil cetak adalah:
Stu: Siswa [nama = json, usia = 24, alamat = Distrik Xicheng, Beijing]
Stu2: Siswa [nama = json, usia = 24, alamat = distrik Xicheng, Beijing]
Seperti yang dapat dilihat dari kode di atas, menggunakan JSONObject dapat dengan mudah mengonversi string format JSON menjadi objek Java, tetapi menggunakan JSONArray tidak semudah itu, karena memiliki simbol "[]", jadi setelah kita mendapatkan objek JSONArray, kita mengambil elemen pertama, yang merupakan deformasi siswa yang kita butuhkan, dan kemudian menggunakan JSONObject untuk dengan mudah mendapatkannya.
2. Transfer Daftar dan String JSON
Daftar-》》 string json
public static void listToJson () {student stu = siswa baru (); stu.setname ("json"); stu.setage ("23"); Stu.setaddress ("Beijing Haidian District"); Daftar <Sahasiswa> Daftar = NEW ARRAYLIT <) (); Daftar. Gunakan jsonObject // jsonObject listObject = jsonobject.fromObject (daftar); // 2. Gunakan jsonarrayjsonarray listarray = jsonarray.fromObject (daftar); // system.out.println ("listObject:"+listObject.toString ()); System.out.println ("ListArray:"+listArray.toString ());}Saya telah menggunakan JSONObject untuk bertaruh. Mari kita lihat hasilnya sebelum komentar.
Pengecualian di utas "Main" net.sf.json.jSonexception: 'Object' adalah array. Gunakan jsonarray sebagai gantinya
Katakan padaku bahwa ada pengecualian. Dengan memeriksa kode sumber, saya menemukan bahwa ketika menggunakan metode FromObject, pertama -tama saya akan menilai jenis parameter. Di sini saya memberi tahu kami bahwa parameter yang diteruskan adalah jenis array karena arraylist digunakan. Mari kita lihat hasilnya setelah komentar.
ListArray: [{"Alamat": "Distrik Haidian, Beijing", "Age": "23", "Name": "Json"}]
Hasil ini normal.
JSON String-》》 Daftar
Dari contoh di atas, kita dapat melihat bahwa objek daftar hanya dapat dikonversi ke dalam format objek array. Jadi mari kita lihat konversi dari string ke daftar di bawah ini.
public static void jsontolist () {string arraystr = "[{/" name/":/" json/",/" use/":/" 24/",/" address/":/" beijing xicheng distrik/"}]"; // convert ke listlist <student> list2 = (list <student> (student> (studentrom. Student.class); for (siswa Stu: list2) {System.out.println (Stu);} // Convert ke Array Student [] ss = (Student []) jsonarray.toArray (jsonarray.fromobject (arraystr), student.class); untuk (siswa: SS) {System.out.outCetak hasilnya,
Siswa [Nama = JSON, Usia = 24, Alamat = Distrik Xicheng, Beijing]
Siswa [Nama = JSON, Usia = 24, Alamat = Distrik Xicheng, Beijing]
Karena format string dalam format dengan "[]", objek JSONArray dipilih di sini, yang memiliki metode Toarray dan Tolist untuk digunakan. Yang pertama dikonversi menjadi array di Jawa, atau ke dalam daftar di Java. Karena ada kelas entitas di sini yang sesuai, jenis generik (student.class) ditentukan saat menggunakannya, sehingga objek yang dikonversi dapat diperoleh.
3. Konversi peta dan string JSON
Peta-》》 string json
public static void maptojson () {student stu = siswa baru (); stu.setname ("json"); stu.setage ("23"); stu.setaddress ("shanghai, cina"); peta <string, stu> peta = hashmap baru <string, student> (); peta. JsonObjectJSonObject mapObject = jsonObject.fromObject (peta); System.out.println ("MapObject"+MapObject.ToString ()); // 2. Jsonarrayjsonarray mapArray = jsonarray.fromObject (peta); System.out.println ("MapArray:"+MapArray.ToString ());}Cetak hasilnya,
MapObject {"First": {"Alamat": "Shanghai, China", "Age": "23", "Name": "Json"}}
MapArray: [{"pertama": {"alamat": "shanghai, cina", "zaman": "23", "name": "json"}}]
Dua bentuk dicetak di atas.
JSON String-》》 Peta
Strings JSON tidak dapat dikonversi langsung menjadi objek peta. Untuk mendapatkan nilai yang sesuai dengan kunci di peta, metode lain diperlukan.
public static void jsontoMap () {string strobject = "{/" first/": {/" address/":/" shanghai, cina/",/" even/":/" 23/",/" name/":/" json/"}}"; // jsonobjectjsonyobject. Hashmap (); peta.put ("pertama", student.class); // Metode Tobean digunakan, dan tiga parameter diperlukan untuk mybean my = (mybean) jsonobject.tobean (jsonObject, mybean.class, peta); System.out.println (my.getFirst ();};};Cetak hasilnya,
Siswa [nama = json, usia = 23, alamat = Shanghai, Cina]
Di bawah ini adalah kode mybean.
Paket com.cn.study.day4; import java.util.map; import com.cn.study.day3.student; kelas publik mybean {siswa swasta pertama; siswa publik getFirst () {return first;} public void setFirst (siswa pertama) {this.first = first;}} public void setFirst (student pertama) {this.first = first;}} public void setFirst (siswa) {this.first = first;}}Menggunakan metode Tobean (), tiga parameter diteruskan, yang pertama adalah objek JSONOBJECT, yang kedua adalah mybean.class, dan yang ketiga adalah objek peta. Melalui MyBean, kita dapat mengetahui bahwa harus ada atribut pertama di kelas ini, dan jenisnya adalah siswa, yang sesuai dengan jenis kunci dan nilai dalam peta, yaitu, jenis nilai yang sesuai dengan jenis kunci pertama.
Di atas adalah penjelasan terperinci tentang contoh konversi timbal balik dari string JSON dan objek Java yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda!