Die Speicherstruktur der Karte ist ein Schlüssel-/Wertformular. Schlüssel und Wert können gewöhnliche Typen oder JavaBeans sein, die von sich selbst (in diesem Artikel) oder der Liste mit Generika geschrieben wurden.
(Github -Projektseite von GSON: https://github.com/google/gson)
Javabäer
In diesem Beispiel möchten Sie sich darauf konzentrieren, wie JSON JSON zurück in die Definition von Typetoken umwandelt, wenn ein normales javabanes Objekt.
Entitätsklasse:
public class Point {private int x; privat int y; public point (int x, int y) {this.x = x; this.y = y; } public int getX () {return x; } public void setx (int x) {this.x = x; } public int gety () {return y; } public void sety (int y) {this.y = y; } @Override public String toString () {return "point [x =" + x + ", y =" + y + "]"; }}Testklasse:
import Java.util.linkedhashMap; import Java.util.map; import com.google.gson.gson; import com.google.gson.gsonBuilder; import com.google.gson.reflect.typepeken; public class gsontest3 {public static void main (String [] args) {gson gson = new gsonBuilder (). EnableComplexMapkeySerialization () .Create (); MAP <Point, String> map1 = new LinkedHashMap <Punkt, String> (); // verwenden linkedHasMap, um die Ergebnisse in First-in-First-Out-Order MAP1.put (neuer Punkt (5, 6), "a") zu sortieren; map1.put (neuer Punkt (8, 8), "B"); String S = gson.tojson (MAP1); System.out.println (s); // Ergebnis: [[{"x": 5, "y": 6}, "A"], [{"x": 8, "y": 8}, "B"] map <point, String> retmap = gson.fromjson (S, New typerteka <map <Punkt, String >> () {) {{) {{{{{). für (Punkt p: retmap.keyset ()) {System.out.println ("Schlüssel:" + P + "Werte:" + retmap.get (p)); } System.out.println (retmap); System.out.println ("------------------------------"); Karte <string, point> map2 = new LinkedHashMap <String, Punkt> (); map2.put ("a", neuer Punkt (3, 4)); map2.put ("b", neuer Punkt (5, 6)); String s2 = gson.tojson (MAP2); System.out.println (S2); Karte <String, Point> retmap2 = gson.fromjson (S2, New TypEToken <map <String, Punkt >> () {} .getType ()); für (String -Schlüssel: retmap2.keyset ()) {System.out.println ("Schlüssel:" + Schlüssel + "Werte:" + retmap2.get (Schlüssel)); }}}Ergebnis:
[[{"x": 5, "y": 6}, "a"], [{"x": 8, "y": 8}, "B"] Schlüssel: Punkt [x = 5, y = 6] Werte: a key: point [x = 8, y = 8] Werte: b {Punkt [x = 5, y = 6] = a, Punkt [x = 8, y = 8, y = 8] = 8] {"a": {"x": 3, "y": 4}, "b": {"x": 5, "y": 6}} Schlüssel: A Werte: Punkt [x = 3, y = 4] Schlüssel: B Werte: Punkt [x = 5, y = 6]Generische Liste
Entitätsklasse:
import Java.util.date; Student der öffentlichen Klasse {private int id; privater Zeichenfolge Name; Privatdatum Geburtstag; public int getid () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public date getBirthday () {Return Birthday; } public void setBirthday (Datum Geburtstag) {this.birthday = Geburtstag; } @Override public String toString () {return "student [birthday =" + birthday + ", id =" + id + ", name =" + name + "]"; }} öffentlicher Klassenlehrer {private int id; privater Zeichenfolge Name; privater String -Titel; public int getid () {return id; } public void setId (int id) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String gettitle () {return title; } public void settitle (String title) {this.title = title; } @Override public String toString () {return "lehrer [id =" + id + ", name =" + name + ",]"; }}Testklasse:
Paket com.tgb.lk.demo.gson.test4; Import Java.util.ArrayList; import Java.util.date; import Java.util.linkedhashMap; importieren java.util.list; import Java.util.map; import com.google.gson.gson; import com.google.gson.reflect.typepeken; public class gsontest4 {public static void main (String [] args) {student student1 = new student (); student1.setid (1); Student1.SetName ("Li Kun"); student1.setBirthday (neues Datum ()); Student2 = neuer Schüler (); student2.setid (2); Student2.SetName ("Cao Guisheng"); student2.setBirthday (neues Datum ()); Student student3 = neuer student (); Student3.Setid (3); Student3.SetName ("Liu Bo"); Student3.SetBirthday (neues Datum ()); LIST <Student> stulist = new ArrayList <Student> (); stulist.add (student1); stulist.add (student2); stulist.add (student3); Lehrer Lehrer1 = neuer Lehrer (); Teacher1.Setid (1); Teacher1.SetName ("Lehrer MI"); Teacher1.Settitle ("Professor"); Lehrer Teacher2 = neuer Lehrer (); Teacher2.setID (2); Teacher2.SetName ("Lehrer Ding"); Teacher2.Settitle ("Dozent"); LIST <Lacher> lehrerlist = new ArrayList <Arner> (); TeacherList.Add (Lehrer1); TeacherList.Add (Lehrer2); MAP <string, object> map = new LinkedHashMap <String, Object> (); map.put ("Studenten", Stulist); map.put ("Lehrer", Lehrerliste); Gson gson = new gson (); String S = gson.tojson (MAP); System.out.println (s); System.out.println ("------------------------------"); Karte <String, Objekt> retmap = gson.fromjson (s, neu typEToken <map <String, Liste <Objekt >>> () {} .GetType ()); für (String -Schlüssel: retmap.keyset ()) {System.out.println ("Schlüssel:" + Schlüssel + "Werte:" + retmap.get (Schlüssel)); if (key.equals ("student")) {list <Student> stulist = (list <Student>) retmap.get (Schlüssel); System.out.println (Stulist); } else if (key.equals ("lehrer") {list <lehrer> tchrlist = (list <lehrer>) retmap.get (key); System.out.println (tchrlist); }}}}Ausgangsergebnis:
{"Studenten": [{"ID": 1, "Name": "Li Kun", "Geburtstag": "22. Juni 2012, 9:48:19 PM"}, {"ID": 2, "Name": "Cao Guisheng", "Geburtstag": " 9:48:19 PM "}]," Lehrer ": [{" ID ": 1," Name ":" Lehrer Mi "," Titel ":" Professor "}, {" ID ": 2," Name ":" Lehrer Ding "," Titel ":" Dozent "}]}} ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ birthDay=Jun 22, 2012 9:48:19 PM}, {id=3.0, name=Liu Bo, birthDay=Jun 22, 2012 9:48:19 PM}] key:teachers values:[{id=1.0, name=Teacher Mi, title=Professor}, {id=2.0, name=Teacher Ding, title=Lecturer}] [{id=1.0, name=Teacher Mi, title=Professor}, {ID = 2.0, Name = Lehrer Ding, Titel = Dozent}]