GSON, Perpustakaan Kelas Java, dapat mengubah objek Java menjadi JSON, atau mengubah string JSON menjadi objek Java yang sama. GSON mendukung objek Java kompleks yang sewenang -wenang termasuk objek tanpa kode sumber.
Perpustakaan parsing JSON lainnya termasuk JSON-LIB; Jackson; com.alibaba.fastjson
Saya masih suka Google GSON.
1. Gunakan skenario:
Konversi objek Java dan string JSON; output log.
Misalnya:
Logger Logger = Logger.getLogger (CommonAction.class); gson G = GSON baru (); logger.info ("return:"+g.toJson (peta)); 2. Contoh Penggunaan:
1. TOJSON Penggunaan Dasar
Metode TOJASON () Mengubah objek menjadi string JSON
Gson gson = gson baru (); daftar orang = arraylist baru (); string str = gson.toJson (orang);
2. Penggunaan Dasar: fromjson ()
GSON menyediakan metode fromjson () untuk mengimplementasikan metode konversi dari string JSON ke entitas Java.
Misalnya, string JSON adalah:
[{"Name": "Name0", "Age": 0}] Tetapi:
Orang orang = gson.fromjson (str, person.class);
Berikan dua parameter, yaitu string JSON dan jenis objek yang perlu dikonversi.
3. Hindari Unicode Escape
Misalnya: {"s": "/u003c"} Saya hanya ingin hanya mencetaknya seperti ini {"s": "<"} solusi: Saya hanya perlu menonaktifkan html melarikan diri. Gson gson = baru
Gsonbuilder (). DisableHtmlesCaping (). Create ();
4. Kecualikan bidang tertentu
Jika Kelas A berisi bidang lapangan1 dan kelas induknya juga berisi bidang lapangan1, maka ketika objek ke JSON, menyatakan beberapa bidang JSON bernama Field1 akan terjadi. Solusi 1: Hapus Field Filed1 di Kelas A. Solusi 2: Gunakan anotasi @Expose JSON untuk menambahkan bidang Filed1 untuk mencetak di kelas MessageText @Expose. Kemudian Field1 tanpa anotasi di kelas induk akan dikecualikan.
Gson g = gsonbuilder baru (). Excelefieldswithoutexposeannotation (). Create ();
5. Ubah Nama Atribut
3. Gunakan contoh:
impor java.lang.reflect.type; import java.sql.timestamp; impor java.text.dateFormat; impor java.text.simpledateFormat; impor java.util.arraylist; import java.util.date; impor java.util.utillist; com.google.gson.GsonBuilder;import com.google.gson.JsonDeserializationContext;import com.google.gson.JsonDeserializer;import com.google.gson.JsonElement;import com.google.gson.JsonParseException;import com.google.gson.JsonPrimitive;import com.google.gson.jsonserializationContext; import com.google.gson.jsonserializer; import com.google.gson.reflect.typetoken; kelas publik gsondemo {public static void main (string [] args) {// gson gson = gson baru (); // Atur format konversi properti tipe gson gson = new gsonbuilder (). Registertypeadapter (timestamp.class, timestamptypeadapter ()). SetDateFormat ("yyyy-mm-dd hh: mm: ss"). Create (); Daftar <Fon> orang = Daftar ArrayList baru <Sone> (); untuk (int i = 0; i <10; i ++) {orang p = orang baru (); p.setname ("name" + i); p.setage (i * 5); p.setinsTime (timestamp baru (System.currentTimemillis ())); orang. } String str = gson.toJson (orang); System.out.println (str); Daftar <Son> ps = gson.fromjson (str, typetoken baru <Daftar <sone> () {}. GetType ()); untuk (int i = 0; i <ps.size (); i ++) {person p = ps.get (i); System.out.println (p.tostring ()); } System.out.println (timestamp baru (System.CurrentTimeMillis ())); }} class Person {private string name; usia int pribadi; waktu penyisipan waktu privat; public string getName () {return name; } public void setName (name string) {this.name = name; } public int getage () {usia kembali; } public void setage (int usia) {this.age = usia; } waktu publik getInsertTime () {return insertTime; } public void setInsertTime (timestamp insertTime) {this.inserttime = insertTime; } @Override public string toString () {return name + "/t" + usia + "/t" + insertTime; }} // Menerapkan serialisasi dan deserialisasi kelas antarmuka timestamptypeadapter mengimplementasikan JSonserializer <T timesTamp>, jsondeserializer <T timesTamp> {public jsoneLement serialize (format stempel-format = jsonserializationContext ARGREY-M) {dateFormat format = HH: MM: SS: SS "); String DateFormatString = format.Format (tanggal baru (src.getTime ())); return JsonPrimitive baru (DateFormatSring); } Deserialize Timestamp Publik (JSONElement JSON, Type Typeoft, JSondeSerializationContext Context) melempar JsonParseException {if (! (JSON instance dari jsonprimitive)) {lempar jsonparseException baru ("Tanggal harus menjadi nilai string"); } coba {dateFormat format = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss: ss"); Tanggal tanggal = (tanggal) format.parse (json.getAsstring ()); mengembalikan stempel waktu baru (Date.getTime ()); } catch (exception e) {lempar jsonparseException baru (e); }}}