โครงสร้างการจัดเก็บของแผนที่เป็นแบบฟอร์มคีย์/ค่า คีย์และค่าอาจเป็นประเภทธรรมดาหรือ javabeans ที่เขียนด้วยตัวเอง (บทความนี้) หรือรายการที่มีทั่วไป
(หน้าโครงการ Github ของ GSON: https://github.com/google/gson)
ชวา
ในตัวอย่างนี้คุณต้องการมุ่งเน้นไปที่วิธีการแปลง JSON กลับไปเป็นคำจำกัดความของ typetoken เมื่อวัตถุ Javabean ปกติ
ระดับเอนทิตี:
จุดเรียนสาธารณะจุด {ส่วนตัว int x; ส่วนตัว int y; จุดสาธารณะ (int x, int y) {this.x = x; this.y = y; } สาธารณะ int getx () {return x; } โมฆะสาธารณะ setx (int x) {this.x = x; } สาธารณะ int getey () {return y; } โมฆะสาธารณะ sety (int y) {this.y = y; } @Override สตริงสาธารณะ toString () {return "จุด [x =" + x + ", y =" + y + "]"; -คลาสทดสอบ:
นำเข้า java.util.linkedhashmap; นำเข้า java.util.map; นำเข้า com.google.gson.gson; นำเข้า com.google.gson.gsonbuilder; นำเข้า com.google.gson.reflect.typetoken; ระดับสาธารณะ GNONTEST3 {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {gson gson = new gsonBuilder (). enableCompleCyMapKeySerialization () .Create (); แผนที่ <จุด, สตริง> map1 = ใหม่ linkedhashmap <point, string> (); // ใช้ linkedhashmap เพื่อเรียงลำดับผลลัพธ์ในลำดับแรกในอันดับแรก map1.put (จุดใหม่ (5, 6), "a"); map1.put (จุดใหม่ (8, 8), "b"); String s = gson.tojson (MAP1); System.out.println (s); // result: [[{"x": 5, "y": 6}, "a"], [{"x": 8, "y": 8}, "b"]] แผนที่ <จุด, สตริง> retmap = gson.fromjson สำหรับ (จุด P: retmap.keyset ()) {system.out.println ("คีย์:" + p + "ค่า:" + retmap.get (p)); } system.out.println (retmap); System.out.println ("----------------------------------"); แผนที่ <สตริง, จุด> map2 = ใหม่ linkedhashmap <สตริง, จุด> (); map2.put ("a", จุดใหม่ (3, 4)); map2.put ("b", จุดใหม่ (5, 6)); สตริง s2 = gson.tojson (map2); System.out.println (S2); แผนที่ <string, point> retmap2 = gson.fromjson (s2, typetoken ใหม่ <map <string, point >> () {} .getType ()); สำหรับ (คีย์สตริง: retmap2.keyset ()) {system.out.println ("คีย์:" + คีย์ + "ค่า:" + retmap2.get (คีย์)); -ผลลัพธ์:
[[{"x": 5, "y": 6}, "a"], [{"x": 8, "y": 8}, "b"]] คีย์: จุด [x = 5, y = 6] ค่า: คีย์: จุด [x = 8, y = 8] {"a": {"x": 3, "y": 4}, "b": {"x": 5, "y": 6}} คีย์: ค่า: จุด [x = 3, y = 4] คีย์: b ค่า: จุด [x = 5, y = 6]รายการสามัญ
ระดับเอนทิตี:
นำเข้า java.util.date; นักศึกษาชั้นเรียนสาธารณะ {ID INT ส่วนตัว; ชื่อสตริงส่วนตัว; วันเกิดส่วนตัววันเกิด; สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } วันที่สาธารณะ getBirthday () {ส่งคืนวันเกิด; } โมฆะสาธารณะ setBirthday (วันเกิดวันที่) {this.birthday = วันเกิด; } @Override สตริงสาธารณะ toString () {return "นักเรียน [วันเกิด =" + วันเกิด + ", id =" + id + ", name =" + name + "]"; }} ครูชั้นเรียนสาธารณะ {ID INT ส่วนตัว; ชื่อสตริงส่วนตัว; ชื่อสตริงส่วนตัว; สาธารณะ int getId () {return id; } โมฆะสาธารณะ setId (int id) {this.id = id; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getTitle () {return title; } โมฆะสาธารณะ settitle (ชื่อสตริง) {this.title = title; } @Override สตริงสาธารณะ 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; ชั้นเรียนสาธารณะ GNONTEST4 {โมฆะคงที่สาธารณะหลัก (String [] args) {นักเรียนนักเรียน 1 = นักเรียนใหม่ (); student1.setId (1); student1.setName ("Li Kun"); student1.setBirthday (วันที่ใหม่ ()); นักเรียน 2 = นักเรียนใหม่ (); student2.setId (2); student2.setName ("Cao Guisheng"); student2.setBirthday (วันที่ใหม่ ()); นักเรียนนักเรียน 3 = นักเรียนใหม่ (); student3.setid (3); student3.setName ("Liu Bo"); student3.setBirthday (วันที่ใหม่ ()); รายการ <student> stulist = new ArrayList <Tudent> (); Stulist.add (Student1); Stulist.add (Student2); stulist.add (นักเรียน 3); ครูครู 1 = ครูใหม่ (); ครู 1.SetId (1); ครู 1.SetName ("ครู MI"); ครู 1.Settitle ("ศาสตราจารย์"); ครูครู 2 = ครูใหม่ (); ครู 2.SetId (2); อาจารย์ 2.setName ("ครู ding"); อาจารย์ 2.settitle ("อาจารย์"); รายการ <Teacher> TeacherList = New ArrayList <Teacher> (); Teacherlist.add (ครู 1); Teacherlist.add (ครู 2); แผนที่ <string, Object> MAP = ใหม่ LinkedHashMap <String, Object> (); map.put ("นักเรียน", stulist); map.put ("ครู", TeacherList); GSON GSON = New GSON (); String s = gson.tojson (แผนที่); System.out.println (s); System.out.println ("----------------------------------"); แผนที่ <string, Object> retmap = gson.fromjson (s, typetoken ใหม่ <map <string, list <object>> () {} .getType ()); สำหรับ (คีย์สตริง: retmap.keyset ()) {system.out.println ("คีย์:" + คีย์ + "ค่า:" + retmap.get (คีย์)); if (key.equals ("นักเรียน")) {รายการ <student> stulist = (รายการ <student>) retmap.get (คีย์); System.out.println (Stulist); } อื่นถ้า (key.equals ("ครู")) {รายการ <Teacher> tChrList = (รายการ <Teacher>) retmap.get (คีย์); System.out.println (tchrlist); -ผลลัพธ์ผลลัพธ์:
{"นักเรียน": [{"id": 1, "ชื่อ": "Li Kun", "วันเกิด": "Jun 22, 2012 9:48:19 PM"}, {"ID": 2, "Name": "Cao Guisheng", "วันเกิด": "Jun 22, 2012 9:48:19 PM" 9:48:19 PM "}]," ครู ": [{" id ": 1," ชื่อ ":" อาจารย์ mi "," title ":" ศาสตราจารย์ "}, {" id ": 2," ชื่อ ":" ครู ding "," ชื่อ ":" ผู้บรรยาย "}}}}} - - วันเกิด = 22 มิ.ย. 2012 9:48:19 PM}, {id = 3.0, ชื่อ = liu bo, วันเกิด = มิ.ย. 22, 2012 9:48:19 PM}] คีย์: ค่าครู: [{id = 1.0, ชื่อ = ครู mi, ชื่อ = ศาสตราจารย์}, {id = 2.0, ชื่อ = ครูชื่อ {id = 2.0, name = teacher ding, title = อาจารย์}]