هيكل تخزين الخريطة هو نموذج المفتاح/القيمة. يمكن أن يكون المفتاح والقيمة من أنواع عادية ، أو جافابانز مكتوبة من قبل أنفسهم (هذه المقالة) ، أو قائمة مع الأدوية الجيلية.
(صفحة مشروع Github Github: https://github.com/google/gson)
جافابان
في هذا المثال ، تريد التركيز على كيفية تحويل JSON مرة أخرى إلى تعريف typetoken عند كائن Javabean العادي.
فئة الكيان:
Public Class Point {private int x ؛ الخاص int 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 ؛ استيراد java.util.map ؛ استيراد com.google.gson.gson ؛ استيراد com.google.gson.gsonbuilder ؛ استيراد com.google.gson.reflect.tepetoken ؛ الفئة العامة gsontest3 {public static void main (string [] args) {gson gson = new gsonbuilder (). MAP <Point ، String> map1 = new LinkedHashMap <point ، string> () ؛ // استخدم LinkedHashMap لفرز النتائج في الترتيب الأول في الأول map1.put (5 ، 6) ، "A") ؛ MAP1.PUT (نقطة جديدة (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 <point ، لـ (Point P: RETMAP.KEYSET ()) {system.out.println ("المفتاح:" + 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)) ؛ السلسلة S2 = gson.tojson (map2) ؛ System.out.println (S2) ؛ Map <String ، Point> retMap2 = gson.fromjson (S2 ، typetoken جديد <map <string ، point >> () {} .gettype ()) ؛ for (مفتاح السلسلة: replap2.keyset ()) {system.out.println ("المفتاح:" + key + "القيم:" + retmap2.get (مفتاح)) ؛ }}}نتيجة:
[[{"x": 5 ، "y": 6} ، "a"] ، [{"x": 8 ، "y": 8} ، "b"] المفتاح: point [x = 5 ، y = 6] القيم: مفتاح: point [x = 8 ، y = 8] القيم: b {point [x = 6] = a ، point ، {"a": {"x": 3 ، "y": 4} ، "b": {"x": 5 ، "y: 6}} المفتاح: القيم: نقطة [x = 3 ، y = 4]قائمة عامة
فئة الكيان:
استيراد java.util.date ؛ طالب الطبقة العامة {private int id ؛ اسم السلسلة الخاصة ؛ عيد ميلاد التاريخ الخاص public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } التاريخ العام getBirthday () {return Birthday ؛ } public void setbirthday (Date Birthday) {this.birthday = عيد ميلاد ؛ } Override public string toString () {return "student [birthday =" + birthday + "، id =" + id + "، name =" + name + "]" ؛ }} مدرس الفئة العامة {private int id ؛ اسم السلسلة الخاصة ؛ عنوان السلسلة الخاصة ؛ public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getTitle () {return title ؛ } public void settitle (tring title) {this.title = title ؛ } Override Public String ToString () {return "Teacher [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.tepetoken ؛ الفئة العامة gsontest4 {public static void main (string [] args) {student1 = new student () ؛ student1.setid (1) ؛ student1.setName ("Li Kun") ؛ student1.setbirthday (Date ()) ؛ الطالب 2 = طالب جديد () ؛ student2.setid (2) ؛ student2.setName ("Cao Guisheng") ؛ student2.SetBirthday (Date ()) ؛ الطالب 3 = طالب جديد () ؛ student3.setid (3) ؛ student3.setName ("liu bo") ؛ student3.setBirthday (Date ()) ؛ قائمة <Tudent> Stulist = new ArrayList <Tudent> () ؛ Stulist.add (student1) ؛ Stulist.add (student2) ؛ Stulist.add (student3) ؛ المعلم 1 = معلم جديد () ؛ Teacher1.setId (1) ؛ Teacher1.setName ("Teacher MI") ؛ المعلم 1.Settitle ("أستاذ") ؛ المعلم 2 = معلم جديد () ؛ Teacher2.setId (2) ؛ Teacher2.SetName ("المعلم Ding") ؛ Teacher2.Settitle ("محاضر") ؛ قائمة <Sethors> teacherlist = new ArrayList <Sethor> () ؛ TeacherList.add (Teacher1) ؛ TeacherList.add (Teacher2) ؛ خريطة <string ، object> map = new LinkedHashMap <string ، Object> () ؛ map.put ("الطلاب" ، stulist) ؛ map.put ("المعلمين" ، قائمة المعلمين) ؛ gson gson = new gson () ؛ سلسلة s = gson.tojson (MAP) ؛ system.out.println (s) ؛ System.out.println ("------------------------------------") ؛ MAP <String ، Object> retmap = gson.fromjson (s ، typetoken new <map <string ، list <object>> () {} .gettype ()) ؛ for (مفتاح السلسلة: repretmap.keyset ()) {system.out.println ("المفتاح:" + key + "القيم:" + retmap.get (مفتاح)) ؛ if (key.equals ("students")) {list <Tudent> stulist = (list <Tudent>) replyap.get (key) ؛ System.out.println (Stulist) ؛ } آخر إذا (key.equals ("المعلمين"))) system.out.println (tchrlist) ؛ }}}}نتيجة الإخراج:
{"الطلاب": [{"id": 1 ، "name": "li kun" ، "عيد الميلاد": "22 يونيو 2012 ، 9:48:19 مساءً"} ، {"id": 2 ، "name": 9:48:19 PM "}] ،" المعلمين ": [{" {id ": 1 ،" name ":" Teacher Mi "،" title ":" Professor "} ، {" id ": 2 ، ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- عيد ميلاد = 22 يونيو ، 2012 9:48:19 مساءً {id = 2.0 ، name = Teacher Ding ، title = محاضر}]