يمكن لـ GSON ، مكتبة فئة Java ، تحويل كائنات Java إلى JSON ، أو تحويل سلاسل JSON إلى كائن Java متساوي. يدعم GSON كائنات Java المعقدة المعقدة بما في ذلك الكائنات بدون رمز المصدر.
تشمل مكتبات تحليل JSON الأخرى JSON-LIB ؛ جاكسون com.alibaba.fastjson
ما زلت أحب Google GSON.
1. استخدم السيناريوهات:
تحويل كائنات Java وسلاسل JSON ؛ سجل الإخراج.
على سبيل المثال:
logger logger = logger.getLogger (commonAction.class) ؛ gson g = new gson () ؛ logger.info ("return:"+g.tojson (map)) ؛ 2. أمثلة على الاستخدام:
1. الاستخدام الأساسي توجسون
Tojason () طريقة تحويل كائن إلى سلسلة JSON
GSON GSON = New GSON () ؛ قائمة الأشخاص = ArrayList () ؛ String str = gson.tojson (أشخاص) ؛
2. الاستخدام الأساسي: FromJson ()
يوفر GSON طريقة FromJson () لتنفيذ طريقة التحويل من سلاسل JSON إلى كيانات Java.
على سبيل المثال ، سلسلة JSON هي:
[{"name": "name0" ، "Age": 0}] لكن:
شخص الشخص = gson.fromson (str ، person.class) ؛
توفير معلمتين ، وهما سلسلة JSON ونوع الكائن الذي يجب تحويله.
3. تجنب الهروب يونيكود
على سبيل المثال: {"s": "/u003c"} أريد فقط طباعته مثل هذا {"s": "<"} الحل: أنا فقط بحاجة إلى تعطيل هروب HTML. GSON GSON = جديد
gsonbuilder (). disableHtmlesCaping (). create () ؛
4. استبعاد بعض الحقول
إذا كانت الفئة A تحتوي على حقل الحقل 1 ، كما تحتوي الفئة الأم أيضًا على Field1 ، ثم عند حدوث كائن إلى JSON ، فإن العديد من حقول JSON المسمى Field1 ستحدث. الحل 1: إزالة الحقل المودع 1 في الفئة A. الحل 2: استخدم التعليق التوضيحي لـ JSON لإضافة الحقل المودع 1 للطباعة في الفئة A messageTextExpose. ثم سيتم استبعاد Field1 بدون شرح في الفصل الأصل.
gson g = new gsonbuilder ().
5. تغيير اسم السمة
3. استخدم الأمثلة:
استيراد java.lang.reflect.type ؛ استيراد java.sql.timestamp ؛ استيراد java.text.dateformat ؛ استيراد java.text.simpledateformat ؛ import java.util.ArrayList ؛ eSport java.util.date ؛ import java.util.list ؛ com.google.gson.gsonbuilder ؛ import com.google.gson.jsondeserializationContext ؛ import com.google.gson.jsondeserializer ؛ import com.google.gson.jsonelement ؛ import com.google.gson.jsonparseexception ؛ import com.google.gson.jsonprimitive ؛ com.google.gson.jsonserializer ؛ import com.google.gson.reflect.tepetoken ؛ الفئة العامة gsondemo {public static void main (string [] args) {// gson gson = new gson () ؛ . قائمة <Person> PERSONS = New ArrayList <Person> () ؛ لـ (int i = 0 ؛ i <10 ؛ i ++) {person p = new person () ؛ p.setName ("الاسم" + i) ؛ p.setage (i * 5) ؛ P.SetInSertTime (Timestamp جديد (System.CurrentTimeMillis ())) ؛ الأشخاص. Add (p) ؛ } String str = gson.tojson (أشخاص) ؛ system.out.println (str) ؛ قائمة <Person> ps = gson.fromjson (str ، typetoken new <list <person> () {}. gettype ()) ؛ لـ (int i = 0 ؛ i <ps.size () ؛ i ++) {person p = ps.get (i) ؛ system.out.println (p.toString ()) ؛ } system.out.println (Timestamp جديد (System.CurrentTimeMillis ())) ؛ }} class person {private string name ؛ عصر INT الخاص ؛ Timestamp الخاص إدراج السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public int getage () {return Age ؛ } public void setage (int age) {this.age = age ؛ } timestamp public getinserttime () {return insertTime ؛ } public void setInserTtime (timestamp inserttime) {this.inserttime = insertTime ؛ } Override Public String ToString () {return name + "/t" + Age + "/t" + insertTime ؛ }} // تنفيذ التسلسل و kesterialization واجهة الفئة timestamptypeadapter تنفذ jsonserializer <Timestamp> ، jsondeserializer <Timestamp> {public jsonelement serialize (timestamp src ، type arg1 ، jsonserializationContext arg2) HH: MM: SS: SS ") ؛ سلسلة DateFormAtasString = Format.Format (تاريخ جديد (src.getTime ())) ؛ إرجاع New Jsonprimitive (DateFormatassTring) ؛ } Timestamp Deserialize (jsonelement json ، typeoft ، jsondeserializationcontext context) يلقي jsonparseexception {if (! (json extrealof jsonprimitive)) } جرب {dateFormat Format = new SimplEdateFormat ("Yyyy-MM-DD HH: MM: SS: SS") ؛ تاريخ التاريخ = (التاريخ) Format.Parse (json.getasstring ()) ؛ إرجاع الطابع الزمني الجديد (Date.getTime ()) ؛ } catch (استثناء e) {رمي new JsonparseException (e) ؛ }}}