Структура хранения карты - форма ключа/значение. Ключ и ценность могут быть обычных типов или Javabeans, написанных самим собой (в этой статье), или список с помощью генериков.
(Project's Project's Project's Gthub: https://github.com/google/gson)
Javabean
В этом примере вы хотите сосредоточиться на том, как преобразовать JSON обратно в определение TypetOken, когда нормальный Javabean -объект.
Класс сущности:
Public Class Point {private int x; частный инт; 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 + "]"; }}Тестовый класс:
импортировать java.util.linkedhashmap; импортировать java.util.map; Импорт com.google.gson.gson; Импорт com.google.gson.gsonbuilder; Импорт com.google.gson.reflect.typetoken; открытый класс gsontest3 {public static void main (string [] args) {gson gson = new gsonbuilder (). enablecomplexmapkeyserialization () .create (); Map <point, string> map1 = new LinkedHashmap <point, string> (); // Использовать LinkedHashmap, чтобы сортировать результаты в первом в-первом порядок map1.put (new Point (5, 6), "a"); map1.put (новая точка (8, 8), "b"); String s = gson.tojson (map1); System.out.println (s); // Результат: [[{"x": 5, "y": 6}, "a"], [{"x": 8, "y": 8}, "b"]] map <point> retmap = gson.fromjson (s, new typletoken <map <point >> () {} .getp ();); for (point p: retmap.keyset ()) {system.out.println ("key:" + p + "значения:" + retmap.get (p)); } System.out.println (retmap); System.out.println ("----------------------------------"); Map <string, point> map2 = new LinkedHashmap <string, point> (); map2.put ("a", новая точка (3, 4)); map2.put ("b", новая точка (5, 6)); String S2 = gson.tojson (map2); System.out.println (S2); Map <string, point> retmap2 = gson.fromjson (s2, new typetoken <map <string, point >> () {} .gettype ()); for (string key: retmap2.keyset ()) {System.out.println ("key:" + key + "values:" + retmap2.get (key)); }}}результат:
[[{"x": 5, "y": 6}, "a"], [{"x": 8, "y": 8}, "b"]] Ключ: точка [x = 5, y = 6] значения: a key: point [x = 8, y = 8] значения: b {point [x = 5, y = 6] = a, точка [x = 8, y = 8] = b {x = 5, y = 6] = a, точка [x = 8, y = 8] = b {x = 5, y = 6] = a, точка [x = 8, y = 8] = b {x = 5, y = 6] = a, точка [x = 8, y = 8]. {"a": {"x": 3, "y": 4}, "b": {"x": 5, "y": 6}} Ключ: a значения: точка [x = 3, y = 4] Ключ: b Значения: точка [x = 5, y = 6]Общий список
Класс сущности:
импортировать java.util.date; студент открытого класса {Private Int ID; Приватное название строки; частное свидание по случаю дня рождения; 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 (дата рождения) {this.BirthDay = день рождения; } @Override public String toString () {return "Студент [день рождения =" + день рождения + ", id =" + id + ", name =" + name + "]"; }} public Class Seacher {private Int Id; Приватное название строки; Приватная строка название; 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 (строка заголовка) {this.title = title; } @Override public String toString () {return "Учитель [id =" + id + ", name =" + name + ",]"; }}Тестовый класс:
пакет com.tgb.lk.demo.gson.test4; импортировать java.util.arraylist; импортировать java.util.date; импортировать java.util.linkedhashmap; импортировать java.util.list; импортировать java.util.map; Импорт com.google.gson.gson; Импорт com.google.gson.reflect.typetoken; открытый класс gsontest4 {public static void main (string [] args) {студент студент1 = новый студент (); Студент1.setid (1); Student1.setName ("Li Kun"); Студент1.SetBirthDay (New Date ()); Студент2 = новый студент (); Студент2.setid (2); Студент2.setname ("Cao Guisheng"); Студент2.SetBirthDay (новая дата ()); Студент Студент3 = новый студент (); Студент3.setid (3); Студент3.SetName ("Лю бо"); Студент3.SetBirthDay (новая дата ()); Список <Tlade> stulist = new ArrayList <toodTude> (); Stulist.add (Student1); Stulist.add (Student2); Stulist.add (Student3); Учитель учитель1 = новый учитель (); Учитель1.setid (1); Учитель1.SetName («Учитель MI»); Учитель1.SetTitle («Профессор»); Учитель учитель2 = новый учитель (); Учитель2.setid (2); Учитель2.setname («Учитель Дин»); Учитель2.settitle («Лектор»); Список <Semined> Учительский список = новый ArrayList <Semine> (); Учительский список. Адд (Учитель1); Учительский список. Адд (учитель2); Map <string, object> map = new LinkedHashmap <string, object> (); map.put ("студенты", Stulist); map.put («учителя», учительский список); Gson Gson = new Gson (); String s = gson.tojson (map); System.out.println (s); System.out.println ("----------------------------------"); Map <string, object> retmap = gson.fromjson (s, new typetoken <map <string, list >>> () {} .gettype ()); for (String Key: retmap.keyset ()) {System.out.println ("key:" + key + "values:" + retmap.get (key)); if (key.equals ("Студенты")) {list <toold> stulist = (list <tood>) retmap.get (key); System.out.println (Stulist); } else if (key.equals ("Учителя")) {list <bemine> tchrlist = (list <bestive>) retmap.get (key); System.out.println (tchrlist); }}}}Результат вывода:
{"Студенты": [{"id": 1, "name": "li Kun", "День рождения": "22 июня 2012 г. 9:48:19 PM"}, {"id": 2, "Имя": "Cao Guisheng", "День рождения": "22 июня 2012 9:48:19 PM"}, {"ID": "3,": "LiU Bo", "Li 9:48:19 вечера "}]," Учителя ": [{" id ": 1," name ":" Учитель Mi "," Title ":" Professor "}, {" id ": 2," имя ":" Учитель Ding "," Title ":" Lecturer "}]}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. день рождения = 22 июня 2012 г. 9:48:19 вечера}, {id = 3,0, имя = liu bo, день рождения = 22 июня 2012 г., 9:48:19 PM}] Ключ: значения учителей: [{id = 1,0, имя = учитель MI, название = профессор}, {id = 2.0, имя = учитель ding, title = Lecturer}] [ID = 1.0, name = name = name = name = name = name = name = name name = {id = 2.0, name = учитель ding, title = лектор}]