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: JsonHierarchicalStreamDriverviszont megtartja a dupla idézőjeleket. Vegyük a következő JSON-t, hogy visszaállítsuk a-ra Vevő tárgy: 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: 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."mobil": 4676543565, "életkor": 30,
6. A JSON deserializálása egy objektumra
{"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"}]} ]}}
ügyfél = (Ügyfél) xstream.fromXML (dataJson);
7. Következtetés