Avui en dia, és molt habitual rebre dades Cadena JSON format en lloc de XML. Quan tractem amb JSON String a Java, no converteix el Cadena JSON a Objecte JSON . Però utilitza el Cadena JSON sempre no és una bona opció perquè és difícil de fer-hi front. A causa del canvi i la demanda de la tecnologia, ho hem de fer convertir la cadena JSON en objecte JSON per recuperar valors. per resoldre aquest problema hi ha algunes biblioteques de codi obert que ens ho permeten convertir la cadena JSON en objecte JSON. En aquest apartat hem explicat com convertir la cadena JSON en objecte JSON detallada amb exemple. Abans de passar al tema principal, fem una ullada al format JSON.
jsonStringExample = { 'name' : 'Ronaldo', 'nickname' : 'Sam', 'id' : 312, 'age' : 21, 'height' : 163, 'lastOverScore' : [4, 1, 6, 6, 2, 1] }
El format JSON anterior conté sis atributs dels quals els dos primers són cadenes, els tres següents són numèrics i, finalment, una matriu JSON.
Converteix la cadena JSON en objecte JSON
S'utilitzen les tres biblioteques següents per convertir String a JSON Object a Java:
- Utilitzant la biblioteca Gson
- Utilitzant JSON-Simple Library
- Biblioteca Jackson
Utilitzant la biblioteca Gson
Gson és un codi obert i ric Java biblioteca proporcionada per Google. S'utilitza per convertir la cadena JSON en objecte JSON equivalent i l'objecte JSON en cadena JSON. La següent línia de codi s'utilitza per convertir la cadena JSON en objecte JSON.
Gson g = new Gson(); Student s = g.fromJson(jsonString, Student.class)
També podem convertir l'objecte JSON a JSON String mitjançant l' toJson() mètode.
String str = g.toJson(p);
Utilitzant JSON-Simple Library
És una altra biblioteca Java de codi obert que s'utilitza per convertir la cadena JSON en objecte JSON. L'avantatge de la biblioteca JSON-Simple és la seva petita mida. És perfecte quan l'entorn de restricció de memòria és important. Tingueu en compte que també és compatible amb JDK 1.2. Vol dir que el podem utilitzar amb un projecte heretat que no es troba a Java 5. Utilitzem les següents declaracions per convertir la cadena JSON en objecte JSON.
JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(stringToParse);
Utilitzant la biblioteca Jackson
La biblioteca Jackson és una biblioteca de Java eficient i àmpliament utilitzada per assignar objectes Java a JSON i viceversa. És ric en funcions, un rendiment ràpid i també admet la transmissió en temps real. El flux pot analitzar una gran sortida JSON dels serveis web sense carregar-la completament a la memòria. La declaració següent converteix la cadena JSON que representa un estudiant en una classe Java que representa l'estudiant.
Student student = new ObjectMapper().readValue(jsonString, Student.class);
El desavantatge de la biblioteca Jackson és que requereix almenys JDK 1.5. Per tant, si estem davant d'una versió anterior, no hi encaixarà. Un altre desavantatge de la biblioteca Jackson és que no és compatible amb J2ME.
Exemple de conversió de cadena JSON a objecte JSON
Al programa següent, hem convertit una cadena JSON en objecte JSON.
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();>
Vegem un altre exemple.
JsonStringToJsonObjectExample2.java
upcasting
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); } }
Sortida:
Sam Smith Python