GSON, die Bibliothek der Java -Klasse, kann Java -Objekte in JSON umwandeln oder JSON -Strings in ein gleiches Java -Objekt umwandeln. GSON unterstützt beliebige komplexe Java -Objekte, einschließlich Objekte ohne Quellcode.
Andere JSON-Parsing-Bibliotheken sind JSON-Lib; Jackson; com.alibaba.fastjson
Ich mag immer noch Googles GSON.
1. Szenarien verwenden:
Konvertierung von Java -Objekten und JSON -Saiten; Protokollausgabe.
Zum Beispiel:
Logger logger = logger.getLogger (CommonAction.class); gson g = new gson (); logger.info ("return:"+g.tojson (map)); 2. Beispiele für die Nutzung:
1. Grundnutzung tojson
Die Methode tojason () wandelt ein Objekt in einen JSON -String um
Gson gson = new gson (); list personons = new ArrayList (); String str = gson.tojson (Personen);
2. Grundlegende Verwendung: Fromjson ()
GSON stellt die Methode von JSON () zur Implementierung der Methode zur Konvertierung von JSON -Zeichenfolgen in Java -Entitäten bereit.
Zum Beispiel ist die JSON -Zeichenfolge:
[{"Name": "Name0", "Alter": 0}] Aber:
Person Person = gson.fromjson (str, Person.class);
Geben Sie zwei Parameter an, nämlich die JSON -Zeichenfolge und den Typ des Objekts, der konvertiert werden muss.
3.. Vermeiden Sie Unicode entkommen
Zum Beispiel: {"S": "/u003c"} Ich möchte es einfach einfach so drucken {"S": "<"} Lösung: Ich muss nur HTML -Flucht deaktivieren. Gson gson = neu
GsonBuilder (). DisableHtmlescaping (). Create ();
4. Ausschließen bestimmter Felder
Wenn eine Klasse A Field1 enthält, und seine übergeordnete Klasse auch das Feld Feld1 enthält, erfolgt ein Objekt mit JSON mehrere JSON -Felder mit dem Namen Field1. Lösung 1: Entfernen Sie das Feld Filed1 in Klasse A. Lösung 2: Verwenden Sie JSONs @Expons Annotation, um das Feld Fileed1 hinzuzufügen, um in der Klasse A MessAGETEXT @Expose zu drucken. Dann wird Feld1 ohne Annotation in der übergeordneten Klasse ausgeschlossen.
Gson g = new gsonBuilder (). ExkludefieldswithoutexposeAnnotation (). Create ();
5. Attributname ändern
3. Verwenden Sie Beispiele:
importieren java.lang.reflect.type; import Java.sql.timestamp; import Java.Text.DateFormat; Import Java.Text.SimpledateFormat; Import Java.util.ArrayList; Import Java.util.date; Import Java.util.List; Com.ggon.gson; com.google.gson.gsonbuilder; import com.google.gson.jsondesserializationcontext; import com.google.gson.jsondeserializer; import com.google.gson.jsonelement; import Com.gon.gson.jsonParsexception; Imporcon.gon.gon.gon.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gson.gon.gson.gson.gson.gson.gson.gson com.google.gson.jsonserializationContext; import com.google.gson.jsonserializer; import com.google.gson.reflect.typepeken; public class gSondemo {public static void main (String [] args) {// gson gson = new gson (); // Formatkonvertierung von Eigenschaften vom Typ GSON GSON = new gsonBuilder (). RegisterTypeTapter (Timestamp.Class, neuer TimestampTypeadapter ()). Liste <Person> persons = new ArrayList <Person> (); für (int i = 0; i <10; i ++) {Person p = new Person (); P.SetName ("Name" + i); P.Setage (i * 5); P.SetInsertTime (neuer Zeitstempel (System.CurrentTimemillis ())); persons.add (p); } String str = gson.tojson (Personen); System.out.println (str); Liste <Person> ps = gson.fromjson (str, neu typEToken <list <Person >> () {}. GettType ()); für (int i = 0; i <ps.size (); i ++) {Person p = ps.get (i); System.out.println (p.ToString ()); } System.out.println (neuer Zeitstempel (System.currentTimemillis ())); }} Klasse Person {privater String -Name; privates int Alter; private Zeitstempeleinsatz; public String getName () {return name; } public void setName (String -Name) {this.name = name; } public int getage () {return ay; } public void setage (int age) {this.age = älter; } public Timestamp GetInsertTime () {return InsertTime; } public void setInsertTime (Timestamp InsertTime) {this.insertTime = InsertTime; } @Override public String toString () {return name + "/t" + älter + "/t" + InsertTime; }}//Implement serialization and deserialization interface class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> { public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) { DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH: MM: SS: SS "); String dateFormatassstring = format.format (neues Datum (src.getTime ())); return New JsonPrimitive (DateFormatassstring); } public Timestamp Deserialize (JSonElement JSON, Typ Typeoft, JSondesSerializationContext -Kontext) löst JsonParseException aus {if (! (JSON -Instanz jsonPrimitive)) {neue jsonParseException ("Das Datum sollte ein Streicherwert sein"); } try {dateFormat format = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss: ss"); Datum Datum = (Datum) Format.Parse (json.getassstring ()); Neue Zeitstempel zurückgeben (Datum.getTime ()); } catch (Ausnahme e) {throw New JsonParseException (e); }}}