XStream felhasználói útmutató: JSON

1. Áttekintés

Ez a sorozat harmadik cikke az XStreamről. Ha meg szeretné tudni a Java objektumok XML-be való konvertálásának alapvető használatát, kérjük, olvassa el az előző cikkeket.

Az XML-kezelés képességein túl az XStream Java objektumokat is képes JSON-ba konvertálni. Ebben az oktatóanyagban megismerhetjük ezeket a szolgáltatásokat.

2. Előfeltételek

Mielőtt elolvassa ezt az oktatóanyagot, olvassa el a sorozat első cikkét, amelyben elmagyarázzuk a könyvtár alapjait.

3. Függőségek

 com.thoughtworks.xstream xstream 1.4.5 

4. JSON illesztőprogramok

Az előző cikkekben megtanultuk az XStream példány beállítását és az XML illesztőprogram kiválasztását. Hasonlóképpen két illesztőprogram áll rendelkezésre az objektumok JSON-ba történő konvertálásához: JsonHierarchicalStreamDriver és JettisonMappedXmlDriver.

4.1. JsonHierarchicalStreamDriver

Ez az illesztőprogram-osztály sorosíthatja az objektumokat a JSON-ra, de nem képes deszerializálni az objektumokat. Nem igényel különféle függőségeket, és vezetőosztálya önálló.

4.2. JettisonMappedXmlDriver

Ez az illesztőprogram-osztály képes átalakítani a JSON-ot objektumokba és objektumokból. Ezen illesztőprogram-osztály használatával hozzá kell adnunk egy extra függőséget a kidobás.

 org.codehaus.jettison jettison 1.3.7 

5. Objektum sorosítása a JSON-hoz

Hozzunk létre egy Vevő osztály:

public class Ügyfél {private String keresztnév; privát karakterlánc vezetéknév; magán dátum dob; privát String kor; privát Lista contactDetailsList; // szerelők és beállítók}

Ne feledje, hogy (talán váratlanul) létrehoztunk kor mint a Húr. Ezt a választást később elmagyarázzuk.

5.1. Használata JsonHierarchicalStreamDriver

Áthaladunk a JsonHierarchicalStreamDriver hogy létrehozzon egy XStream példányt.

xstream = új XStream (új JsonHierarchicalStreamDriver ()); dataJson = xstream.toXML (ügyfél);

Ez a következő JSON-t generálja:

{"com.baeldung.pojo.Customer": {"keresztnév": "John", "vezetékNév": "Doe", "dob": "1986-02-14 16: 22: 18.186 UTC", "age": "30", "contactDetailsList": [{"mobile": "6673543265", "vezetékes": "0124-2460311"}, {"mobile": "4676543565", "vezetékes": "0120-223312"}]} }

5.2. JettisonMappedXmlDriver Végrehajtás

Áthaladunk a JettisonMappedXmlDriver osztály egy példány létrehozásához.

xstream = new XStream (új JettisonMappedXmlDriver ()); dataJson = xstream.toXML (ügyfél);

Ez a következő JSON-t generálja:

{"com.baeldung.pojo.Customer": {"keresztnév": "John", "vezetékNév": "Doe", "dob": "1986-02-14 16: 25: 50.745 UTC", "age": 30, "contactDetailsList": [{"com.baeldung.pojo.ContactDetails": [{"mobile": 6673543265, "vezetékes": "0124-2460311"}, {"mobile": 4676543565, "vezetékes": "0120 -223312 "}]}]}}

5.3. Elemzés

A két meghajtó kimenete alapján egyértelműen láthatjuk, hogy a létrehozott JSON-ban vannak némi különbségek. Például, JettisonMappedXmlDriver az adattípus ellenére a számértékek dupla idézőjelét kihagyja java.lang.String:

"mobil": 4676543565, "életkor": 30,

JsonHierarchicalStreamDriverviszont megtartja a dupla idézőjeleket.

6. A JSON deserializálása egy objektumra

Vegyük a következő JSON-t, hogy visszaállítsuk a-ra Vevő tárgy:

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

Emlékezzünk arra, hogy csak az egyik illesztőprogram (JettisonMappedXMLDriver) deserializálhatja a JSON-t. Megpróbálta használniJsonHierarchicalStreamDriver erre a célra egy UnsupportedOperationException.

A Jettison illesztőprogram használatával deserializálhatjuk a Vevő tárgy:

ügyfél = (Ügyfél) xstream.fromXML (dataJson);

7. Következtetés

Ebben a cikkben kitértünk az XStream JSON-kezelési képességeire, az objektumok JSON-ba konvertálására. Megvizsgáltuk azt is, hogyan tudjuk módosítani a JSON kimenetünket, rövidebbé, egyszerűbbé és olvashatóbbá téve azt.

Az XStream XML feldolgozásához hasonlóan más módon is testreszabhatjuk a JSON sorosítási módját a példány konfigurálásával, kommentárok vagy programozott konfiguráció segítségével. További részletek és példák a sorozat első cikkében találhatók.

A teljes forráskód a példákkal letölthető a linkelt GitHub adattárból.