L'API en streaming lit et écrit des événements discrets au contenu JSON. JsonParser lit les données, tandis que JSongenerator écrit les données. Il s'agit de la méthode la plus efficace des trois, avec la surcharge la plus basse et l'opération de lecture / écriture la plus rapide. Il est similaire à l'analyseur Stax pour XML.
Dans cet article, nous montrerons comment lire et écrire des données JSON à l'aide de l'API de streaming de Jackson. Le travail des API en streaming utilisant JSON pour chaque détail doit être géré avec prudence. L'exemple suivant utilisera deux classes:
Classe JSongenerator - Écrit sur JSON String.
Songenerator est la classe de base qui définit le contenu JSON écrit par des API publiques. Créez une instance en utilisant la méthode d'usine de l'instance JSONFactory.
Déclarations de classe Ce qui suit est la déclaration de la classe org.codehaus.jackson.jsongenerator:
La classe abstraite publique JSongenerator étend l'objet implémenable
Classes imbriquées
| Sn | Cours et descriptions |
|---|---|
| 1 | Classe statique jsongenerator.feature // L'énumération définit toutes les fonctions à bascule du générateur. |
Constructeur
| Sn | Cours et descriptions |
|---|---|
| 1 | Constructeur par défaut |
Classe JsonParser - Parses Json Strings.
JsonParser est la classe de base qui définit le contenu JSON utilisé par l'API publique pour lire. Créez une instance en utilisant la méthode d'usine de l'instance JSONFactory.
DÉCLARATIONS DE CLASSE ÉTANT: La déclaration de la classe org.codehaus.jackson.jsonParser:
Classe abstrait publique JSonParser étend l'objet implémente clôtuable, version
Classes imbriquées
| Sn | Cours et descriptions |
|---|---|
| 1 | Classe statique JSonParser.Feature // Énumération définit toutes les fonctions à bascule de l'analyseur. |
| 2 | La classe statique JSONParser.numberType // Les énumérations peuvent être utilisées pour des types de nombres "locaux" (optimaux) possibles. |
Constructeur
| Sn | Cours et descriptions |
|---|---|
| 1 | Constructeur JSonParser () // par défaut |
| 2 | JsonParser protégé (fonctionnalités INT) |
Méthode héritée Cette classe hérite des méthodes de classe suivantes:
La copie de code est la suivante:
java.lang.object
Écrivez à JSON à l'aide de Jsongenerator
L'utilisation de Jsongenerator est très simple. Tout d'abord, utilisez la méthode jsonfactory.createjsongenerator () pour créer un jsongenerator, et utilisez la méthode écrite *** () pour écrire chaque valeur JSON.
JSONFACTORY JASONFACTORY = NEW JSONFACTORY (); JSONGEnerator JSongenerator = JasonFactory.CreateJsongenerator (nouveau fichier ("Student.json"), Jsonencoding.Utf8); // {JSongenerator.WriteStartObject (); // "Name": "Mahesh Kumar "jsongenerator.writeStringfield (" nom "," Mahesh Kumar ");Jetons un coup d'œil à l'opération Jsongenerator. Créez un fichier de classe Java nommé JackSonter dans le répertoire c: /> jackson_workspace.
Dossier: jacksonteter.java
import java.io.file; import java.io.ioexception; import java.util.map; import org.codehaus.jackson.jsonencoding; import org.codehaus.jackson.jsonfactory; import org.codehaus.jackson.jsongénérateur; import org.codehaUS.jackson.jackson. org.codehaus.jackson.map.jsonmappingException; import org.codehaus.jackson.map.objectmapper; classe publique jackSonter {public static void main (String args []) {jackSonter Tester = new JackSonter (); essayez {jsonfactory jasonfactory = new JSONFactory (); Jsongenerator jsongenerator = jasonfactory.createjsongenerator (nouveau fichier ("student.json"), jsonencoding.utf8); // {jsongenerator.writeStartObject (); // "Name": "Mahesh Kumar" jsongenerator.writeStringfield ("Name", "Mahesh Kumar"); // "Age": 21 JSongenerator.WRITEUMINDIELD ("Age", 21); // "vérifié": false jsongenerator.writebooleanfield ("vérifié", false); // "marques": [100, 90, 85] jsongenerator.writeFieldName ("marques"); // [jsongenerator.writeStartArray (); // 100, 90, 85 jsongenerator.wriTenumber (100); jsongenerator.wriTenumber (90); jsongenerator.wriTenumber (85); //] jsongenerator.writeendArray (); //} jsongenerator.writeendObject (); jsongenerator.close (); // Résultat Student.json // {// "Name": "Mahesh Kumar", // "Age": 21, // "Verified": false, // "marks": [100,90,85] //} objectMapper Mapper = new ObjectMapper (); Map <string, object> dataMap = mapper.readvalue (nouveau fichier ("student.json"), map.class); System.out.println (datamap.get ("name")); System.out.println (dataMap.get ("Age")); System.out.println (dataMap.get ("vérifié")); System.out.println (dataMap.get ("Marks")); } catch (JSonParseException e) {e.printStackTrace (); } catch (jsonmappingException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); }}}Résultats de la vérification
Utilisez Javac pour compiler la classe suivante:
La copie de code est la suivante:
C: / jackson_workspace> javac jacksonter.java
Maintenant, exécutez JackSonter pour voir le résultat:
La copie de code est la suivante:
C: / jackson_workspace> java jacksonteter
Vérifiez la sortie
Mahesh Kumar21false [100, 90, 85]
Lire JSON à l'aide de JSonParser
L'utilisation de JsonParser est très simple. Créez d'abord une méthode JSonParser à l'aide de JSONFactory.CreateJsonParser () et utilisez sa méthode NextToken () pour lire chaque chaîne JSON comme une balise. Vérifiez chaque jeton et le processus correspondant.
JSONFACTORY JASONFACTORY = NEW JSONFACTORY (); JJSONPARSER JSONPARSER = JASONFACTORY.CREATEJSONPARSER (nouveau fichier ("Student.json")); While (JsonParser.nextToken ()! = JSONTOKIN.end_Object) {// Get the Current Token Field Field. if ("name" .equals (fieldName)) {// Déplacez-vous vers le token suivant jsonparser.nextToken (); System.out.println (jsonParser.getText ()); }}Jetons un coup d'œil aux opérations de JsonParser. Créez une classe nommée JackSonter en Java dans le dossier c: /> jackson_workspace.
Dossier: jacksonteter.java
Importer java.io.file; import java.io.ioexception; import org.codehaus.jackson.jsonencoding; import org.codehaus.jackson.jsonfactory; import org.codehaus.jackson.jsongenerator; import org.codehaus.jackson.jsonSerseexception; importation org.codehaus.jackson.jackson. org.codehaus.jackson.jSontoken; import org.codehaus.jackson.map.jsonmappingException; classe publique jackSonteter {public static void main (String args []) {jackSonteter Tester = new JackSonter (); essayez {jsonfactory jasonfactory = new JSONFactory (); Jsongenerator jsongenerator = jasonfactory.createjsongenerator (nouveau fichier ("student.json"), jsonencoding.utf8); jsongenerator.writeStartObject (); jsongenerator.writeStringfield ("nom", "Mahesh Kumar"); jsongenerator.wriTenumberfield ("âge", 21 ans); jsongenerator.writebooleanfield ("vérifié", false); jsongenerator.writeFieldName ("marques"); jsongenerator.writeStArtArray (); // [jsongenerator.wriTenumber (100); jsongenerator.wriTenumber (90); jsongenerator.wriTenumber (85); jsongenerator.writeendArray (); jsongenerator.writeendObject (); jsongenerator.close (); // Student Student.json // {// "Name": "Mahesh Kumar", // "Age": 21, // "Verified": false, // "marks": [100,90,85] //} JsonParser JsonParser = jasonfactory.createjsonParser (New File ("Student.json")); while (jsonParser.nextToken ()! = jSontoken.end_Object) {// Obtenez la chaîne de jeton actuelle fieldName = jsonParser.getCurrentName (); if ("name" .equals (fieldName)) {// Déplacez-vous vers le token suivant jsonparser.nextToken (); System.out.println (jsonParser.getText ()); } if ("Age" .Equals (fieldName)) {// Déplacez-vous vers le token suivant jsonparser.nextToken (); System.out.println (jsonParser.getNumberValue ()); } if ("vérifié" .equals (fieldname)) {// Déplacez-vous vers le token suivant jsonParser.nextToken (); System.out.println (jsonParser.getBooleanValue ()); } if ("marks" .equals (fieldname)) {// se déplacer vers [jsonParser.nextToken (); // Loop till Token égal à "]" while (jsonParser.nextToken ()! = jSontoken.end_Array) {System.out.println (jsonParser.getNumberValue ()); }}}} catch (jsonParseException e) {e.printStackTrace (); } catch (jsonmappingException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); }}}Résultats de la vérification
Compiler Utiliser Javac pour compiler les classes suivantes:
La copie de code est la suivante:
C: / jackson_workspace> javac jacksonter.java
Maintenant, exécutez JackSonter et voyez le résultat comme suit:
La copie de code est la suivante:
C: / jackson_workspace> java jacksonteter
Vérifiez la sortie
Mahesh Kumar21false [100, 90, 85]