맵의 저장 구조는 키/값 형태입니다. 키와 가치는 일반적인 유형 또는 자전거 타기 (이 기사)가 작성하거나 제네릭이있는 목록 일 수 있습니다.
(GSON의 GitHub 프로젝트 페이지 : https://github.com/google/gson)
Javabean
이 예에서는 정상적인 javabean 객체 일 때 JSON을 TypEtoken의 정의로 다시 변환하는 방법에 집중하고자합니다.
엔티티 클래스 :
공개 클래스 포인트 {private int x; 개인 in y; 공개 포인트 (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 import; java.util.map import; import com.google.gson.gson; import com.google.gson.gsonBuilder; import com.google.gson.reflect.typetoken; 공개 클래스 gsontest3 {public static void main (String [] args) {gson = new GsonBuilder (). enableComplexMapKeyserialization () .create (); map <point, string> map1 = new LinkedHashmap <point, String> (); // linkedhashmap을 사용하여 첫 번째 명령 순서 map1.put (new Point (5, 6), "a"); map1.put (New Point (8, 8), "B"); 문자열 s = gson.tojson (map1); System.out.println (s); // 결과 : [{ "x": 5, "y": 6}, "a"], [{ "x": 8, "y": 8}, "b"] map <point, string> retmap = gson.fromjson (s, new typetoken <map <point, string >> () {}). 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", New Point (3, 4)); MAP2.PUT ( "B", New Point (5, 6)); 문자열 s2 = gson.tojson (map2); System.out.println (S2); map <string, point> retmap2 = gson.fromjson (s2, new typetoken <map <string, point >> () {} .getType ()); for (문자열 키 : retmap2.keyset ()) {system.out.println ( "key :" + key + "값 :" + retmap2.get (key)); }}}결과:
[{ "x": 5, "y": 6}, "a"], [{ "x": 8, "y": 8}, "b"] 키 : 점 [x = 5, y = 6] 값 : a 키 : 점 [x = 8, y = 8] 값 : b {point [x = 5, y = 6] = a, y = 8] = b} ------------------------------------------------------------ { "a": { "x": 3, "y": 4}, "b": { "x": 5, "y": 6}} 키 : A 값 : 값 [x = 3, y = 4] 키 : b 값 : 점 [x = 5, y = 6]일반 목록
엔티티 클래스 :
import 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 (문자열 이름) {this.name = 이름; } 공개 날짜 getBirthday () {return birthday; } public void setbirthday (날짜 생일) {this.birthday = 생일; } @override public String toString () {return "return"student [withy [recture [le + girthment + ", id =" + id + ", name =" + name + "]"; }} 공개 클래스 교사 {private int id; 개인 문자열 이름; 개인 문자열 제목; public int getid () {return id; } public void setid (int id) {this.id = id; } public String getName () {return name; } public void setName (문자열 이름) {this.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 가져 오기; import java.util.date; java.util.linkedhashmap import; Java.util.list 가져 오기; java.util.map import; import com.google.gson.gson; import com.google.gson.reflect.typetoken; 공개 클래스 GSONTEST4 {public static void main (String [] args) {Student Student1 = new Student (); Student1.SetId (1); Student1.SetName ( "Li Kun"); Student1.setbirthday (새 날짜 ()); Student2 = 신입생 (); Student2.SetId (2); Student2.SetName ( "Cao Guisheng"); Student2.setbirthday (new date ()); 학생 3 = 신입생 (); Student3.setId (3); Student3.setName ( "liu bo"); Student3.setbirthday (new date ()); List <tudent> stulist = new ArrayList <student> (); stulist.add (학생 1); stulist.add (학생 2); stulist.add (학생 3); 교사 교사 1 = 새로운 교사 (); 교사 1.setId (1); 교사 1. 세트 이름 ( "교사 mi"); 교사 1. 세트 타이틀 ( "교수"); 교사 교사 2 = 새로운 교사 (); 교사 2.SetId (2); 교사 2.setName ( "교사 딩"); 교사 2.SetTitle ( "강사"); List <peacher> el TeacherList.add (교사 1); Teacherlist.add (교사 2); Map <String, Object> Map = New LinkedHashMap <String, Object> (); Map.put ( "학생", Stulist); Map.put ( "교사", 교사 목록); GSON GSON = NEW GSON (); 문자열 s = gson.tojson (지도); System.out.println (s); System.out.println ( "----------------------------------------------------------- map <string, object> retmap = gson.fromjson (s, new typetoken <map <string, list <object>>> () {} .getType ()); for (문자열 키 : retmap.keyset ()) {system.out.println ( "key :" + key + "값 :" + retmap.get (key)); if (key.equals ( "학생")) {list <tudent> stulist = (list <tudent>) retmap.get (key); System.out.println (Stulist); } else if (key.equals ( "교사")) {list <peferne> tchrlist = (list <prection>) retmap.get (key); System.out.println (tchrlist); }}}}출력 결과 :
{ "학생": [{ "id": 1, "name": "li kun", "생일": "2012 년 6 월 22 일 9:48:19 pm"}, { "id": 2, "name": "cao guisheng", "생일": "2012 년 6 월 22 일 9:48:19 pm"}, "id": "22," ":": ",": ":": ":": ":": 9:48:19 PM "}],"교사 ": [{"id ": 1,"name ":"교사 MI ","제목 ":"교수 "}, {"id ": 2,"name ":"교사 딩 ","제목 ":"강사 "}]} ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 생일 = 2012 년 6 월 22 일 9:48:19 pm}, {id = 3.0, name = liu bo, 생일 = 생일 = 6 월 22 일 9:48:19 pm}] 키 : 교사 값 : [{id = 1.0, name = 교사 mi, 제목 = 교수}, {id = 2.0, name = 교사 딩, 제목 = lecturer} [ed = 1.0, 제목 = 교사 mi,}, {id = 2.0, name = 교사 딩, 제목 = 강사}]