Struktur penyimpanan peta adalah bentuk kunci/nilai. Kunci dan nilainya dapat dari tipe biasa, atau orang Java yang ditulis sendiri (artikel ini), atau daftar dengan obat generik.
(Halaman Proyek GitHub GSON: https://github.com/google/gson)
Javabean
Dalam contoh ini, Anda ingin fokus pada cara mengonversi JSON kembali ke definisi Typetoken ketika objek Javabean normal.
Kelas Entitas:
titik kelas publik {private int x; int y private; titik publik (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 + "]"; }}Kelas Tes:
impor java.util.linkedhashmap; impor java.util.map; impor com.google.gson.gson; impor com.google.gson.gsonbuilder; impor com.google.gson.reflect.typetoken; kelas publik gsontest3 {public static void main (string [] args) {gson gson = new gsonbuilder (). enableComplexMapKeyserialization () .create (); Peta <point, string> map1 = new LinkedHashMap <point, string> (); // Gunakan LinkedHashMap untuk mengurutkan hasil dalam urutan pertama-dalam-keluar MAP1.put (titik baru (5, 6), "A"); Map1.put (titik baru (8, 8), "b"); String s = gson.toJson (MAP1); System.out.println (s); // Hasil: [[{"x": 5, "y": 6}, "a"], [{"x": 8, "y": 8}, "b"]] peta <point, string> retmap = gson.fromjson (s, typetoken baru <MAP <point, string> () () {pernah) (s) (s); peta <point, string> () () {pernah) (s) (s); peta <point, string> () () {pernah) (s) (s); peta <point, string> () {ewety (s) (s) (point, string> () () (s) (s) (s) (point, point, string> () {oPy (s); untuk (titik p: retmap.keyset ()) {System.out.println ("key:" + p + "values:" + retmap.get (p)); } System.out.println (retmap); System.out.println ("----------------------------------"); Peta <string, point> map2 = new LinkedHashMap <String, point> (); peta2.put ("a", titik baru (3, 4)); peta2.put ("b", titik baru (5, 6)); String S2 = gson.toJson (MAP2); System.out.println (S2); Peta <string, point> retmap2 = gson.fromjson (s2, typetoken baru <peta <string, point >> () {} .getType ()); untuk (tombol string: retmap2.keyset ()) {System.out.println ("Key:" + Key + "Values:" + retmap2.get (key)); }}}hasil:
[[{"x": 5, "y": 6}, "a"], [{"x": 8, "y": 8}, "b"]] Kunci: point [x = 5, y = 6] Nilai: Kunci: titik [x = 8, y = 8] Nilai: b {point [x = 5, y = 6], point [x = 8 = 8]: B {point [x = 5, y = 6] = x = 80 = 80 =- 80 = {"a": {"x": 3, "y": 4}, "b": {"x": 5, "y": 6}} Kunci: nilai: titik [x = 3, y = 4] Kunci: B Nilai: titik [x = 5, y = 6]Daftar generik
Kelas Entitas:
impor java.util.date; siswa kelas publik {private int id; nama string pribadi; ulang tahun kencan pribadi; publik int getId () {return id; } public void setid (int id) {this.id = id; } public string getName () {return name; } public void setName (name string) {this.name = name; } tanggal publik getBirthday () {kembali ulang tahun; } public void setBirthday (tanggal ulang tahun) {this.birthday = ulang tahun; } @Override Public String ToString () {return "Student [ulang tahun =" + ulang tahun + ", id =" + id + ", name =" + name + "]"; }} guru kelas publik {private int id; nama string pribadi; judul string pribadi; publik int getId () {return id; } public void setid (int id) {this.id = id; } public string getName () {return name; } public void setName (name string) {this.name = name; } public String getTitle () {return title; } public void setTitle (string title) {this.title = title; } @Override Public String ToString () {return "Teacher [id =" + id + ", name =" + name + ",]"; }}Kelas Tes:
paket com.tgb.lk.demo.gson.test4; impor java.util.arraylist; impor java.util.date; impor java.util.linkedhashmap; impor java.util.list; impor java.util.map; impor com.google.gson.gson; impor com.google.gson.reflect.typetoken; kelas publik gsontest4 {public static void main (string [] args) {student student1 = new student (); Student1.setid (1); Student1.setname ("Li Kun"); student1.setBirthday (tanggal baru ()); Student2 = siswa baru (); Student2.setid (2); Student2.setname ("Cao Guisheng"); student2.setBirthday (tanggal baru ()); Siswa Siswa3 = Siswa Baru (); student3.setid (3); student3.setname ("Liu Bo"); student3.setbirthday (tanggal baru ()); Daftar <Sahasiswa> stulist = new ArrayList <shongents> (); stulist.add (student1); stulist.add (student2); stulist.add (student3); Guru guru1 = guru baru (); guru1.setid (1); Teacher1.setname ("Teacher MI"); Teacher1.Settitle ("Profesor"); Guru guru2 = guru baru (); guru2.setid (2); guru2.setname ("Teacher Ding"); guru2.settitle ("Dosen"); Daftar <Gell Teacher> Daftar Guru = Daftar Arraylist Baru <Gell Teacher> (); TeacherList.Add (Teacher1); TeacherList.Add (Teacher2); Peta <String, Object> MAP = new LinkedHashMap <String, Object> (); Map.put ("Siswa", Stulist); Map.put ("Guru", Daftar Guru); GSON GSON = GSON baru (); String s = gson.toJson (peta); System.out.println (s); System.out.println ("----------------------------------"); Peta <string, object> retmap = gson.fromjson (s, typetoken baru <peta <string, daftar <pes Object>>> () {} .getType ()); untuk (tombol string: retmap.keyset ()) {System.out.println ("Key:" + Key + "Values:" + retmap.get (key)); if (key.equals ("Siswa")) {Daftar <Sidaya> stulist = (Daftar <spulher>) retmap.get (key); System.out.println (stulist); } else if (key.equals ("guru")) {list <Gell Teacher> tchrlist = (Daftar <Gell Teacher>) retmap.get (key); System.out.println (tchrlist); }}}}Hasil output:
{"Siswa": [{"id": 1, "Name": "Li Kun", "Ulang Tahun": "22 Jun 2012 9:48:19 PM"}, {"ID": "Name": "Cao Guisheng", "Ulang Tahun": "Juni 22, 2012 9:48:19 PM"}, "": "" Juni 22, "Li," Li. " 9:48:19 PM "}]," guru ": [{" id ": 1," name ":" guru mi "," judul ":" profesor "}, {" id ": 2," name ":" guru ding "," judul ":" dosen "}]} ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 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 = guru ding, judul = dosen}]