Manapság nagyon elterjedt az adatok fogadása JSON karakterlánc formátumban XML helyett. Amikor JSON Stringgel foglalkozunk a Java-ban, az nem konvertálja a JSON karakterlánc nak nek JSON objektum . De használd a JSON karakterlánc mindig nem jó megoldás, mert nehéz kezelni. A technológia változása és igénye miatt szükségünk van rá konvertálja a JSON-karakterláncot JSON-objektummá értékeket lekérni. a probléma megoldására van néhány nyílt forráskódú könyvtár, amely lehetővé teszi számunkra konvertálja a JSON-karakterláncot JSON-objektummá. Ebben a részben elmagyaráztuk hogyan lehet a JSON-karakterláncot JSON-objektummá konvertálni részletesen példával. Mielőtt a fő témára térnénk, vessünk egy pillantást a JSON formátumra.
jsonStringExample = { 'name' : 'Ronaldo', 'nickname' : 'Sam', 'id' : 312, 'age' : 21, 'height' : 163, 'lastOverScore' : [4, 1, 6, 6, 2, 1] }
A fenti JSON formátum hat attribútumot tartalmaz, amelyek közül az első kettő karakterlánc, a következő három numerikus és végül egy JSON tömb.
Konvertálja a JSON-karakterláncot JSON-objektummá
A következő három könyvtár használható a String JSON-objektummá konvertálására Java nyelven:
- A Gson Library használata
- JSON-Simple Library használata
- Jackson könyvtár
A Gson Library használata
A Gson nyílt forráskódú és gazdag Jáva a Google által biztosított könyvtár. A JSON-karakterlánc egyenértékű JSON-objektummá és a JSON-objektum JSON-karakterláncsá konvertálására szolgál. A következő kódsor a JSON-karakterlánc JSON-objektummá konvertálására szolgál.
Gson g = new Gson(); Student s = g.fromJson(jsonString, Student.class)
A JSON objektumot JSON Stringgé is konvertálhatjuk a toJson() módszer.
String str = g.toJson(p);
JSON-Simple Library használata
Ez egy másik nyílt forráskódú Java-könyvtár, amelyet a JSON-karakterlánc JSON-objektummá konvertálására használnak. A JSON-Simple könyvtár előnye a kis mérete. Tökéletes ott, ahol a memóriakorlátozási környezet fontos. Vegye figyelembe, hogy a JDK 1.2-vel is kompatibilis. Ez azt jelenti, hogy használhatjuk olyan örökölt projektekkel, amelyek nem szerepelnek a Java 5-ben. A következő utasításokat használjuk a JSON-karakterlánc JSON-objektummá konvertálásához.
JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(stringToParse);
A Jackson Library használata
A Jackson-könyvtár egy hatékony és széles körben használt Java-könyvtár a Java objektumok JSON-ra és fordítva való leképezésére. Funkciókban gazdag, gyors a teljesítménye, és támogatja a streamelést is. Az adatfolyam képes elemezni a webszolgáltatások nagyméretű JSON-kimenetét anélkül, hogy teljesen betöltené a memóriába. A következő utasítás a tanulót képviselő JSON-karakterláncot a tanulót képviselő Java-osztállyá alakítja.
Student student = new ObjectMapper().readValue(jsonString, Student.class);
A Jackson könyvtár hátránya, hogy legalább JDK 1.5-öt igényel. Ezért ha egy régebbi verzióval van dolgunk, az nem fog odaférni. A Jackson könyvtár másik hátránya, hogy nem támogatja a J2ME-t.
Példa JSON-karakterlánc JSON-objektum átalakításra
A következő programban egy JSON-karakterláncot konvertáltunk JSON-objektummá.
JsonStringToJsonObjectExample.java
import org.json.JSONObject; import org.json.JSONArray; public class JsonStringToJsonObjectExample { public static void main(String args[]) { String str = '[{'No':'17','Name':'Andrew'},{'No':'18','Name':'Peter'}, {'No':'19','Name':'Tom'}]'; JSONArray array = new JSONArray(str); for(int i=0; i <array.length(); i++) { jsonobject object="array.getJSONObject(i);" system.out.println(object.getstring('no')); system.out.println(object.getstring('name')); } < pre> <p> <strong>Output:</strong> </p> <pre> 17 Andrew 18 Peter 19 Tom </pre> <p>Let's see another example.</p> <p> <strong>JsonStringToJsonObjectExample2.java</strong> </p> <pre> import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = '{'name': 'Sam Smith', 'technology': 'Python'}'; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString('technology'); System.out.println(technology); } } </pre> <p> <strong>Output:</strong> </p> <pre> Sam Smith Python </pre> <hr></array.length();>
Lássunk egy másik példát.
JsonStringToJsonObjectExample2.java
objektumosztály java-ban
import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = '{'name': 'Sam Smith', 'technology': 'Python'}'; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString('technology'); System.out.println(technology); } }
Kimenet:
Sam Smith Python