La API de transmisión lee y escribe eventos discretos para el contenido JSON. JsonParser lee los datos, mientras que JSongenerator escribe los datos. Es el método más eficiente de los tres, con la sobrecarga más baja y la operación de lectura/escritura más rápida. Es similar al analizador Stax para XML.
En este artículo, mostraremos cómo leer y escribir datos JSON utilizando la API de transmisión de Jackson. La transmisión de API que funcionan con JSON para cada detalle debe manejarse con precaución. El siguiente ejemplo usará dos clases:
Clase JSongenerator: escribe en la cadena JSON.
Cancerenerator es la clase base que define el contenido JSON escrito por las API públicas. Cree una instancia utilizando el método de fábrica de la instancia JSONFactory.
Declaraciones de clase La siguiente es la declaración del org.codehaus.jackson.jsongenerator Clase:
La clase pública de resumen JSongenerator extiende los implementos de objeto cerrables
Clases anidadas
| Sn | Clases y descripciones |
|---|---|
| 1 | Clase estática JSongenerator.Feature // Enumeration Define todas las funciones toglables del generador. |
Constructor
| Sn | Clases y descripciones |
|---|---|
| 1 | Constructor predeterminado |
Clase JSONPARSER - PARSES JSON STRINGS.
JSONPARSER es la clase base que define el contenido de JSON utilizado por la API pública para leer. Cree una instancia utilizando el método de fábrica de la instancia JSONFactory.
Declaraciones de clase La siguiente es la declaración del org.codehaus.jackson.jsonparser clase:
clase pública de clase abstracta Jsonparser extiende los implementos de objeto cerrables, versionados
Clases anidadas
| Sn | Clases y descripciones |
|---|---|
| 1 | Clase estática jsonparser.feature // Enumeration define todas las funciones toglables del analizador. |
| 2 | clase estática jsonparser.numberType // Las enumeraciones se pueden usar para posibles tipos de números "locales" (óptimos). |
Constructor
| Sn | Clases y descripciones |
|---|---|
| 1 | JsonParser protegido () // Constructor predeterminado |
| 2 | JsonParser protegido (características int) |
Método heredado Esta clase hereda los siguientes métodos de clase:
La copia del código es la siguiente:
java.lang.object
Escribe a JSON usando JSongenerator
Usar jsongenerator es muy simple. Primero, use el método jsonFactory.CreateJSONGENERATOR () para crear un jsongenerator y use el método Write *** () para escribir cada valor JSON.
JsonFactory jasonFactory = new JsonFactory();JsonGenerator jsonGenerator = jasonFactory.createJsonGenerator(new File( "student.json"), JsonEncoding.UTF8);// {jsonGenerator.writeStartObject();// "name" : "Mahesh Kumar"jsonGenerator.writeStringField("name", "Mahesh Kumar");Echemos un vistazo a la operación JSongenerator. Cree un archivo de clase Java llamado JackSontester en el directorio c:/> jackson_workspace.
Archivo: JackSontester.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.jsongenerator; import org.codehaus.jackson.jsonparsexception; org.codehaus.jackson.map.jsonmappingexception; import org.codehaus.jackson.map.objectMapper; public class JackSontester {public static void main (string args []) {JackSontester tester = new JackSontester (); intente {JSONFactory JasonFactory = new JsonFactory (); JSONGENERATOR JSONGENERATOR = JASONFACTORY.CREATEJSONGENERATOR (nuevo archivo ("student.json"), jsonencoding.utf8); // {jSongenerator.writeStarToCject (); // "Nombre": "Mahesh Kumar" JSongenerator.WriteStringfield ("Nombre", "Mahesh Kumar"); // "Age": 21 JSongenerator.WriteNumberfield ("Age", 21); // "Verificado": falso jsongenerator.writeBooleanfield ("verificado", falso); // "Marcas": [100, 90, 85] JSongenerator.WriteFieldName ("Marcas"); // [JSongenerator.WriteStarArray (); // 100, 90, 85 JSongenerator.WriteNumber (100); JSongenerator.WriteNumber (90); JSongenerator.WriteNumber (85); //] JSongenerator.WriteSteArray (); //} JSongenerator.WriteDObject (); jSongenerator.close (); // resultado student.json // {// "name": "mahesh kumar", // "edad": 21, // "verificado": falso, // "marcas": [100,90,85] //} ObjectMapper mapper = new ObjectMapper (); Map <string, object> datAMAP = mApper.ReadValue (nuevo archivo ("student.json"), map.class); System.out.println (datAMap.get ("nombre")); System.out.println (datAMap.get ("edad")); System.out.println (datAMap.get ("verificado")); System.out.println (datAMAP.GET ("Marcas")); } Catch (JSONParseException e) {E.PrintStackTrace (); } Catch (JSONMappingException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); }}}Resultados de verificación
Use Javac para compilar la siguiente clase:
La copia del código es la siguiente:
C:/jackson_workspace> javac jacksontester.java
Ahora corre JackSontester para ver el resultado:
La copia del código es la siguiente:
C:/jackson_workspace> java jacksontester
Verificar la salida
Mahesh Kumar21false [100, 90, 85]
Leer JSON usando JsonParser
Usar jsonparser es muy simple. Primero cree un JSONParser usando el método jsonFactory.CreateJsonParser () y use su método NextToken () para leer cada cadena JSON como una etiqueta. Verifique cada token y el proceso correspondiente.
JSONFactory JasonFactory = new JsonFactory (); jjsonparser jsonparser = jasonfactory.createJsonParser (nuevo archivo ("student.json")); while (jsonparser.nextToken ()! = JsonToken.end_object) {// obtenga el token string de token if ("name" .equals (fieldName)) {// Muévete al siguiente token jsonparser.nextToken (); System.out.println (jsonparser.gettext ()); }}Echemos un vistazo a las operaciones de Jsonparser. Cree una clase llamada JackSontester en Java en la carpeta C:/> Jackson_workspace.
Archivo: JackSontester.java
import java.io.file; import java.io.ioException; import org.codehaus.jackson.jsonencoding; import og.codehaus.jackson.jsonfactory; import og.codehaus.jackson.jsongenerator; import og.codehaus.jackson.jsonparsexception; importar org.codes.codehaus.jackson; org.codehaus.jackson.jsonontoken; import org.codehaus.jackson.map.jsonmappingexception; public class JackSontester {public static void main (string args []) {JackSontester tester = new JackSontester (); intente {JSONFactory JasonFactory = new JsonFactory (); JSONGENERATOR JSONGENERATOR = JASONFACTORY.CREATEJSONGENERATOR (nuevo archivo ("student.json"), jsonencoding.utf8); JSongenerator.WriteStartObject (); JSongenerator.WriteStringfield ("Nombre", "Mahesh Kumar"); JSongenerator.WriteNumberfield ("Age", 21); JSongenerator.WriteBooleanfield ("Verificado", falso); JSongenerator.WriteFieldName ("Marcas"); JSongenerator.WriteStarRArray (); // [JSongenerator.WriteNumber (100); JSongenerator.WriteNumber (90); JSongenerator.WriteNumber (85); JSongenerator.WriteSteArray (); JSongenerator.writeStObject (); jSongenerator.close (); // resultado student.json // {// "nombre": "Mahesh Kumar", // "edad": 21, // "verificado": falso, // "Marks": [100,90,85] //} jsonparser jsonparser = jasonfactory.createjsonparser (nuevo archivo ("student.json"););); while (jsonparser.nextToken ()! = jsonToken.end_object) {// Obtenga la cadena de token actual fieldName = jsonparser.getCurrentName (); if ("name" .equals (fieldName)) {// Muévete al siguiente token jsonparser.nextToken (); System.out.println (jsonparser.gettext ()); } if ("edad" .equals (fieldName)) {// Muévase al siguiente token jsonparser.nextToken (); System.out.println (jsonparser.getNumberValue ()); } if ("verificado" .equals (fieldName)) {// Muévase al siguiente token jsonparser.nextToken (); System.out.println (jsonparser.getBooleanValue ()); } if ("Marks" .equals (fieldName)) {// muévete a [jsonparser.nextToken (); // bucle hasta el token igual a "]" 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 (); }}}Resultados de verificación
Compilar Use Javac para compilar las siguientes clases:
La copia del código es la siguiente:
C:/jackson_workspace> javac jacksontester.java
Ahora ejecute JackSontester y vea el resultado de la siguiente manera:
La copia del código es la siguiente:
C:/jackson_workspace> java jacksontester
Verificar la salida
Mahesh Kumar21false [100, 90, 85]