מדריך למשתמש של XStream: JSON

1. סקירה כללית

זהו המאמר השלישי בסדרה על XStream. אם ברצונך ללמוד על השימוש הבסיסי בהמרת אובייקטים של Java ל- XML ​​ולהיפך, עיין במאמרים הקודמים.

מעבר ליכולות הטיפול ב- XML, XStream יכולה גם להמיר אובייקטים של Java ל- JSON וממנו. במדריך זה נלמד על תכונות אלה.

2. תנאים מוקדמים

לפני שתקרא הדרכה זו, עיין במאמר הראשון בסדרה זו, בו אנו מסבירים את יסודות הספרייה.

3. תלות

 com.thoughtworks.xstream xstream 1.4.5 

4. נהגי JSON

במאמרים הקודמים למדנו כיצד להגדיר מופע XStream ולבחור מנהל התקן XML. באופן דומה, ישנם שני דרייברים זמינים להמרת אובייקטים אל JSON וממנו: JsonHierarchicalStreamDriver ו JettisonMappedXmlDriver.

4.1. JsonHierarchicalStreamDriver

מחלקת מנהלי התקנים זו יכולה לסדר אובייקטים ל- JSON, אך אינה מסוגלת לערער מחדש את האובייקטים. זה לא דורש תלות נוספות, ומחלקת הנהגים שלו היא עצמאית.

4.2. JettisonMappedXmlDriver

מחלקת נהגים זו מסוגלת להמיר את JSON לאובייקטים וממנה. באמצעות מחלקת נהגים זו, עלינו להוסיף תלות נוספת עבור לִנְטוֹשׁ.

 org.codehaus.jettison jettison 1.3.7 

5. סדר סדר אובייקט ל- JSON

בואו ניצור צרכן מעמד:

לקוח בכיתה ציבורית {פרטי מחרוזת שם פרטי; שם משפחה פרטי מחרוזת; תאריך תאריך פרטי; גיל מחרוזת פרטי; רשימת פרטי contactDetailsList; // גטרים וקובעים}

שימו לב שיצרנו (אולי באופן בלתי צפוי) גיל כ חוּט. נסביר את הבחירה הזו בהמשך.

5.1. באמצעות JsonHierarchicalStreamDriver

נעביר א JsonHierarchicalStreamDriver כדי ליצור מופע XStream.

xstream = XStream חדש (חדש JsonHierarchicalStreamDriver ()); dataJson = xstream.toXML (לקוח);

זה מייצר את JSON הבא:

{"com.baeldung.pojo.Customer": {"firstName": "John", "lastName": "Doe", "dob": "1986-02-14 16: 22: 18.186 UTC", "age": "30", "contactDetailsList": [{"mobile": "6673543265", "קוויים": "0124-2460311"}, {"mobile": "4676543565", "קוויים": "0120-223312"}]} }

5.2. JettisonMappedXmlDriver יישום

נעביר א JettisonMappedXmlDriver בכיתה ליצירת מופע.

xstream = XStream חדש (JettisonMappedXmlDriver חדש ()); dataJson = xstream.toXML (לקוח);

זה מייצר את JSON הבא:

{"com.baeldung.pojo.Customer": {"firstName": "John", "lastName": "Doe", "dob": "1986-02-14 16: 25: 50.745 UTC", "age": 30, "contactDetailsList": [{"com.baeldung.pojo.ContactDetails": [{"mobile": 6673543265, "landline": "0124-2460311"}, {"mobile": 4676543565, "fast line": "0120 -223312 "}]}]}}

5.3. אָנָלִיזָה

בהתבסס על התפוקה משני הדרייברים, אנו יכולים לראות בבירור כי ישנם כמה הבדלים קלים ב- JSON שנוצר. לדוגמה, JettisonMappedXmlDriver משמיט את הציטוטים הכפולים לערכים מספריים למרות סוג הנתונים מיתר:

"נייד": 4676543565, "גיל": 30,

JsonHierarchicalStreamDriver, לעומת זאת, שומר על הציטוטים הכפולים.

6. התנערות JSON לאובייקט

בוא ניקח את ה- JSON הבא כדי להמיר אותו בחזרה ל- a צרכן לְהִתְנַגֵד:

{"customer": {"firstName": "John", "lastName": "Doe", "dob": "1986-02-14 16: 41: 01.987 UTC", "age": 30, "contactDetailsList": [{"com.baeldung.pojo.ContactDetails": [{"mobile": 6673543265, "landline": "0124-2460311"}, {"mobile": 4676543565, "fast line": "0120-223312"}]} ]}}

נזכיר שרק אחד מהנהגים (JettisonMappedXMLDriver) יכול לבטל את ערעור JSON. ניסיון להשתמשJsonHierarchicalStreamDriver לצורך זה יביא ל- לא נתמךOperationException.

באמצעות הנהג Jettison, אנו יכולים לערוך את עריכת המוקד צרכן לְהִתְנַגֵד:

לקוח = (לקוח) xstream.fromXML (dataJson);

7. מסקנה

במאמר זה סקרנו את יכולות הטיפול ב- JSON XStream, המרת אובייקטים מ- JSON וממנו. בדקנו גם כיצד נוכל לשנות את פלט ה- JSON שלנו, מה שהופך אותו לקצר יותר, פשוט וקריא יותר.

כמו בעיבוד ה- XML ​​של XStream, ישנן דרכים אחרות שבהן אנו יכולים להתאים אישית את האופן שבו JSON מסודרת באמצעות סדרת התצורה של המופע, באמצעות הערות או תצורה פרוגרמטית. לפרטים נוספים ודוגמאות, עיין במאמר הראשון בסדרה זו.

את קוד המקור השלם עם דוגמאות ניתן להוריד ממאגר GitHub המקושר.


$config[zx-auto] not found$config[zx-overlay] not found