Streaming -API liest und schreibt diskrete Ereignisse in JSON -Inhalte. JsonParser liest die Daten, während Jsongenerator die Daten schreibt. Es ist die effizienteste Methode der drei mit dem niedrigsten Overhead und dem schnellsten Lese-/Schreibvorgang. Es ähnelt dem Stax -Parser für XML.
In diesem Artikel werden wir zeigen, wie Sie JSON -Daten mit Jacksons Streaming -API lesen und schreiben. Streaming -APIs funktionieren mit JSON für jedes Detail müssen mit Vorsicht behandelt werden. Das folgende Beispiel verwendet zwei Klassen:
Jsongenerator -Klasse - schreibt an JSON String.
SongNerator ist die Basisklasse, die JSON -Inhalte definiert, die von öffentlichen APIs geschrieben wurden. Erstellen Sie eine Instanz mit der Werksmethode der JSONFactory -Instanz.
Klassenerklärungen Im Folgenden finden Sie die Erklärung der org.codeehaus.jackson.jsongenerator -Klasse:
öffentliche abstrakte Klasse Jsongenerator erweitert Objekt implementiert Schließbar
Verschachtelte Klassen
| Sn | Klassen und Beschreibungen |
|---|---|
| 1 | Statische Klasse Jsongenerator |
Konstruktor
| Sn | Klassen und Beschreibungen |
|---|---|
| 1 | Standardkonstruktor |
JsonParser -Klasse - Parse Json Strings.
JsonParser ist die Basisklasse, die JSON -Inhalte definiert, die von der öffentlichen API zum Lesen verwendet werden. Erstellen Sie eine Instanz mit der Werksmethode der JSONFactory -Instanz.
Klassenerklärungen Im Folgenden finden Sie die Erklärung der org.codeehaus.jackson.jsonParser -Klasse:
Öffentliche abstrakte Klasse JSONPARSER erweitert Objekt implementiert Schließbar, versioniert
Verschachtelte Klassen
| Sn | Klassen und Beschreibungen |
|---|---|
| 1 | Statische Klasse JSONPARSER.Feature // Aufzählung definiert alle Togglable -Funktionen von Parser. |
| 2 | Statische Klasse JsonParser.numbertype // Aufzählungen können für mögliche "lokale" (optimale) Zahlentypen verwendet werden. |
Konstruktor
| Sn | Klassen und Beschreibungen |
|---|---|
| 1 | geschützter jsonParser () // Standardkonstruktor |
| 2 | geschützter jsonparser (int features) |
Vererbte Methode Diese Klasse erbt die folgenden Klassenmethoden:
Die Codekopie lautet wie folgt:
java.lang.object
Schreiben Sie JSON mit Jsongenerator an JSON
Die Verwendung von Jsongenerator ist sehr einfach. Verwenden Sie zunächst die Methode von JSONFACTORY.CreateJsongenerator (), um einen Jsongenerator zu erstellen, und verwenden Sie die Write *** () -Methode, um jeden JSON -Wert zu schreiben.
JSONFACTORY JASONFACTORY = new JsonFactory (); Kumar "Jsongenerator.Writestringfield (" Name "," Mahesh Kumar ");Schauen wir uns den Jsongenerator -Betrieb an. Erstellen Sie eine Java -Klassendatei namens Jacksontester im Verzeichnis c:/> jackson_workspace.
Datei: jacksontester.java
Java.io.file importieren; import Java.io.ioxception; import Java.util.map; import org.codeehaus.jackson.jsonencoding; org.codeehehaus.jackson.jsonfactory; import org.codeehaus.jackson.jackson.jacksonsexaction; org.codeehaus.jackson.map.jsonmapPingexception; import org.codeehaus.jackson.map.objectmapper; öffentliche Klasse Jacksontester {public static void main (String args []) {Jacksontester tester = new Jacksontester (); try {jsonFactory jasonfactory = new JSONFactory (); Jsongenerator Jsongenerator = jasonfactory.createJsongenerator (neue Datei ("student.json"), jsonencoding.utf8); // {jsongenerator.writestartObject (); // "Name": "Mahesh Kumar" Jsongenerator.Writestringfield ("Name", "Mahesh Kumar"); // "Alter": 21 Jsongenerator.WriteNumberfield ("Alter", 21); // "verifiziert": Falsch Jsongenerator.WriteBooleanfield ("verifiziert", falsch); // "Marks": [100, 90, 85] Jsongenerator.WriteFieldName ("Marks"); // [jsongenerator.WritestArray (); // 100, 90, 85 Jsongenerator.WriteNumber (100); Jsongenerator.WriteNumber (90); Jsongenerator.WriteNumber (85); //] jsongenerator.writeendArray (); //} jsongenerator.writeendObject (); Jsongenerator.CLOSE (); // Ergebnis student.json // {// "Name": "Mahesh Kumar", // "Alter": 21, // "verifiziert": false, // "marks": [100,90,85] //} ObjectMapper mapper = new ObjectMapper (); Karte <String, Objekt> datamap = mapper.readValue (neue Datei ("student.json"), map.class); System.out.println (Datamap.get ("Name")); System.out.println (Datamap.get ("Alter")); System.out.println (Datamap.get ("verifiziert")); System.out.println (Datamap.get ("Marks")); } catch (jsonParseException e) {e.printstacktrace (); } catch (jsonmapPingexception e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); }}}Überprüfungsergebnisse
Verwenden Sie Javac, um die folgende Klasse zu kompilieren:
Die Codekopie lautet wie folgt:
C:/jackson_workspace> javac jacksontester.java
Führen Sie jetzt Jacksontester aus, um das Ergebnis zu sehen:
Die Codekopie lautet wie folgt:
C:/Jackson_Workspace> Java Jacksontester
Überprüfen Sie die Ausgabe
Mahesh Kumar21false [100, 90, 85]
Lesen Sie JSON mit JSONPARSER
JsonParser ist sehr einfach. Erstellen Sie zunächst einen JsonParser mit jSONFACTORY.CreatejsonParser () -Methode und verwenden Sie die NextToken () -Methode, um jede JSON -Zeichenfolge als Tag zu lesen. Überprüfen Sie jedes Token und den entsprechenden Prozess.
JSONFACTORY JASONFACTORY = new JsonFactory (); if ("name" .equals (fieldname)) {// wechseln Sie zu Next Token JsonParser.NextToken (); System.out.println (jsonParser.getText ()); }}Schauen wir uns die Operationen von JsonParser an. Erstellen Sie eine Klasse namens Jacksontester in Java in Ordner c:/> jackson_workspace.
Datei: jacksontester.java
Import Java.io.file; Import Java.io.ioxception; import org.codeehaus.jackson.jsonencoding; import org.codeehaus.jackson.jsonfactory; import org.codehaus.jackson.jsongenerator; import org.codehaus.jackson.jackson.json.json.json.jsonsexception; org.codehaus.jackson.jsonparser; import org.codeehaus.jackson.jsontoken; import org.codeehaus.jackson.map.jsonmapPexception; öffentliche Klasse Jacksontester {public static void Main (String args []) {Jacksontester Tester = New Jacksontester (); try {jsonFactory jasonfactory = new JSONFactory (); Jsongenerator Jsongenerator = jasonfactory.createJsongenerator (neue Datei ("student.json"), jsonencoding.utf8); Jsongenerator.WritestartObject (); Jsongenerator.Writestringfield ("Name", "Mahesh Kumar"); Jsongenerator.WriteNumberfield ("Alter", 21); Jsongenerator.WriteBooleanfield ("verifiziert", falsch); Jsongenerator.WriteFieldName ("Marks"); jsongenerator.writestartArray (); // [jsongenerator.WriteNumber (100); Jsongenerator.WriteNumber (90); Jsongenerator.WriteNumber (85); Jsongenerator.WriteendArray (); Jsongenerator.WriteendObject (); Jsongenerator.CLOSE (); // Ergebnis student.json // {// "Name": "Mahesh Kumar", // "Alter": 21, // "verifiziert": false, // "marks": [100,90,85] //} jsonparser jsonparser = jasonfactory.createjsonParser (neue Datei ("student.json"); while (jsonParser.NextToken ()! if ("name" .equals (fieldname)) {// wechseln Sie zu Next Token JsonParser.NextToken (); System.out.println (jsonParser.getText ()); } if ("Alter" .Equals (fieldName)) {// wechseln Sie zu Next Token JsonParser.NextToken (); System.out.println (jsonParser.getNumberValue ()); } if ("verifiziert" .Equals (fieldname)) {// wechseln Sie zu Next Token JsonParser.NextToken (); System.out.println (jsonParser.getBooleanValue ()); } if ("marks" .equals (fieldname)) {// wechseln Sie zu [jsonParser.NextToken (); // Loop bis Token gleich "]" while (jsonParser.nextToken ()! }}}} catch (jsonParseException e) {e.printstacktrace (); } catch (jsonmapPingexception e) {e.printstacktrace (); } catch (ioException e) {e.printstacktrace (); }}}Überprüfungsergebnisse
Kompilieren Sie verwenden Javac, um die folgenden Klassen zu kompilieren:
Die Codekopie lautet wie folgt:
C:/jackson_workspace> javac jacksontester.java
Führen Sie jetzt Jacksontester und sehen Sie das Ergebnis wie folgt an:
Die Codekopie lautet wie folgt:
C:/Jackson_Workspace> Java Jacksontester
Überprüfen Sie die Ausgabe
Mahesh Kumar21false [100, 90, 85]