Pembalikan JSON Strings dan Java Objects [JSON-LIB]
Selama proses pengembangan, Anda sering perlu bertukar data dengan sistem lain. Format pertukaran data termasuk XML, JSON, dll. JSON, sebagai format data ringan, 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 dataDari 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 nama string pribadi; // usia usia string pribadi; // alamat alamat string pribadi; public string getName () {return name; } public void setName (name string) {this.name = name; } getage string publik () {return usia; } public void setage (String Age) {this.age = usia; } public String getAddress () {alamat kembali; } public void setAddress (Alamat String) {this.address = alamat; } @Override Public 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 jsonObject jsonObject json = jsonObject.fromObject (stu); // 2. Gunakan jsonarray jsonarray array = jsonarray.fromObject (stu); String strjson = json.toString (); String strarray = array.toString (); System.out.println ("Strjson:"+Strjson); System.out.println ("Strarray:"+Strarray); }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", "Age": "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 jsonstrojava () {// Tentukan dua string dalam format berbeda string objectstr = "{/" name/":/" json/",/" usia/":/" 24/",/" alamat/":/" distrik xicheng, beijing/"}"; String arraystr = "[{/" name/":/" json/",/" use/":/" 24/",/" address/":/" Xicheng District, Beijing/"}]"; // 1. Gunakan jsonObject jsonObject jsonObject = jsonobject.fromObject (objekstr); Siswa Stu = (Siswa) JsonObject.tobean (JsonObject, Student.class); // 2. Gunakan jsonarray jsonarray jsonarray = jsonarray.fromObject (arraystr); // Dapatkan elemen pertama dari objek jsonarray o = jsonarray.get (0); JsonObject jsonObject2 = jsonObject.fromObject (o); Siswa Stu2 = (Siswa) jsonObject.tobean (jsonObject2, 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 = baru siswa (); stu.setname ("json"); Stu.setage ("23"); Stu.setaddress ("Distrik Beijing Haidian"); Daftar <Sahasiswa> Daftar = Daftar ArrayList baru <Sahasiswa> (); Daftar.Add (Stu); // 1. Gunakan jsonObject // jsonObject listObject = jsonobject.fromObject (daftar); // 2. Gunakan jsonarray jsonarray 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 District/"}]"; // Konversi ke daftar daftar <spulhy> list2 = (Daftar <spulher>) jsonarray.tolist (jsonarray.fromObject (arraytr), student.class); untuk (siswa Stu: list2) {System.out.println (Stu); } // Konversi ke Array Student [] ss = (Student []) jsonarray.toArray (jsonarray.fromObject (arraytr), student.class); untuk (siswa siswa: ss) {system.out.println (siswa); }}Cetak 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 () {siswa Stu = siswa baru (); stu.setname ("json"); Stu.setage ("23"); Stu.setaddress ("Shanghai, Cina"); Peta <string, stu> peta = hashmap baru <string, student> (); peta.put ("pertama", stu); // 1. JsonObject JsonObject MapObject = jsonObject.fromObject (peta); System.out.println ("MapObject"+MapObject.toString ()); // 2. Jsonarray jsonarray mapArray = jsonarray.fromObject (peta); System.out.println ("MapArray:"+MapArray.ToString ()); }Cetak hasilnya,
MapObject {"First": {"Alamat": "Shanghai," Age ":" 23 "," Name ":" Json "}} Maparray: [{" First ": {" Alamat ":" Shanghai, "Age": "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/",/" use/":/" 23/",/" name/":/" json/"}}"; // jsonObject jsonObject jsonObject = jsonobject.fromObject (strobject); Peta peta = hashmap baru (); 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 pertama; } public void setFirst (siswa pertama) {this.first = pertama; }} 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 semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.