A API de streaming lê e grava eventos discretos para o conteúdo JSON. O JSONPARSER lê os dados, enquanto o JsonGenerator grava os dados. É o método mais eficiente dos três, com a sobrecarga mais baixa e a operação de leitura/gravação mais rápida. É semelhante ao analisador Stax para XML.
Neste artigo, mostraremos como ler e escrever dados JSON usando a API de streaming de Jackson. O trabalho de APIs de streaming usando o JSON para todos os detalhes deve ser tratado com cautela. O exemplo a seguir usará duas classes:
Classe do JsonGenerator - grava na String JSON.
SongEnerator é a classe base que define o conteúdo JSON escrito por APIs públicas. Crie uma instância usando o método de fábrica da instância jsonFactory.
Declarações de classe A seguir, a declaração da classe org.codehaus.jackson.jsongenator:
A classe abstrata pública Jsongenerator estende o objeto implementa
Classes aninhadas
| Sn | Aulas e descrições |
|---|---|
| 1 | Classe estática Jsongenerator.Feature // Enumeração define todas as funções alternáveis do gerador. |
Construtor
| Sn | Aulas e descrições |
|---|---|
| 1 | Construtor padrão |
JSONPARSER CLASSE - Paresia JSON Strings.
O JSONPARSER é a classe base que define o conteúdo JSON usado pela API público para ler. Crie uma instância usando o método de fábrica da instância jsonFactory.
Declarações de classe A seguir, a declaração da classe org.codehaus.jackson.jsonparser:
A classe abstrata pública jsonparser estende o objeto implementa
Classes aninhadas
| Sn | Aulas e descrições |
|---|---|
| 1 | Classe estática jsonparser.feature // Enumeração define todas as funções alternáveis do analisador. |
| 2 | Classe estática jsonparser.NumberType // As enumerações podem ser usadas para possíveis tipos de números "locais" (ideais). |
Construtor
| Sn | Aulas e descrições |
|---|---|
| 1 | JSONPARSER () // construtor padrão protegido |
| 2 | JSONPARSER protegido (INT Recursos) |
Método herdado Esta classe herda os seguintes métodos de classe:
A cópia do código é a seguinte:
java.lang.Object
Escreva para JSON usando o Jsongenerator
Usar o JsonGenerator é muito simples. Primeiro, use o método jsonFactory.CreateJsonGenerator () para criar um jsongenerator e use o método write *** () para escrever cada valor JSON.
JsonFactory JasonFactory = new JsonFactory (); JsonGenerator Jsongenerator = JasonFactory.CreateJsonGenerator (novo arquivo ("Student.json"), jsonEncoding.utf8; Kumar ");Vamos dar uma olhada na operação do JsonGenerator. Crie um arquivo de classe Java chamado JackSontester no diretório C:/> Jackson_workspace.
Arquivo: Jacksontester.java
importar java.io.file; importar java.io.ioException; importar java.util.map; importar org.codehaus.jackson.jsonEncoding; importar org.codehaus.jackson.jsonfactory; importar org.codehaus.jonson.jonSonGenerator; importação; org.codehaus.jackson.map.jsonmappingException; importar org.codehaus.jackson.map.objectmapper; public class Jacksontester {public static void main (string args []) {Jacksontester tester = new JackSontester (); tente {jsonFactory JasonFactory = new JsonFactory (); JsonGenerator JsonGenerator = JasonFactory.CreateJsonGenerator (New File ("Student.json"), jsonEncoding.utf8); // {jsongnerator.WriteStartObject (); // "nome": "mahesh kumar" jsongenerator.writestringfield ("nome", "mahesh kumar"); // "Age": 21 Jsongenerator.Writenumberfield ("Age", 21); // "verificado": false jsongenerator.writeBooleanfield ("verificado", falso); // "Marks": [100, 90, 85] Jsongenerator.WriteFieldName ("Marks"); // [jsongenerator.writestartarray (); // 100, 90, 85 JsonGenerator.Writenumber (100); jsongenerator.writenumber (90); Jsongenerator.writenumber (85); //] jsongenerator.WriteEndArray (); //} jsongenerator.WriteEndObject (); jsongenerator.close (); // Result Student.json // {// "Nome": "Mahesh Kumar", // "Age": 21, // "verificado": false, // "Marks": [100,90,85] //} objectMapper Mapper = new ObjecjectMapper (); Mapa <string, object> datamap = mapper.readValue (novo arquivo ("Student.json"), map.class); System.out.println (datamap.get ("nome")); System.out.println (datamap.get ("idade")); System.out.println (datamap.get ("verificado")); System.out.println (datamap.get ("marks")); } catch (jsonparseException e) {e.printStackTrace (); } catch (jsonMappingException e) {E.printStackTrace (); } catch (ioexception e) {e.printStackTrace (); }}}Resultados da verificação
Use Javac para compilar a seguinte classe:
A cópia do código é a seguinte:
C:/Jackson_workspace> javac jacksontester.java
Agora execute Jacksontoster para ver o resultado:
A cópia do código é a seguinte:
C:/Jackson_workspace> Java Jacksontester
Verifique a saída
Mahesh Kumar21false [100, 90, 85]
Leia o JSON usando o JSONPARSER
Usar o JSONPARSER é muito simples. Primeiro, crie um jsonparser usando o método jsonfactory.createjsonparser () e use seu método nextToken () para ler cada string json como uma tag. Verifique cada token e o processo correspondente.
Jsonfactory jasonFactory = new jsonfactory (); jjsonparser jsonparser = jasonfactory.createjsonparser (new File ("student.json")); if ("name" .equals (fieldname)) {// mova -se para o próximo token jsonparser.nextToken (); System.out.println (jsonparser.getText ()); }}Vamos dar uma olhada nas operações da JSONPARSER. Crie uma classe chamada JackSontester em Java na pasta C:/> Jackson_workspace.
Arquivo: Jacksontester.java
importar java.io.file; importar java.io.ioException; importar org.codehaus.jackson.jsonEncoding; importar org.codehaus.jackson.jsonFactory; importar org.codehaus.jackson.jsongnerator; import.codehaus.jackson.jsonParsecception; importação; importação; importação; importando.codehaus.jackson.jsonparexception; org.codehaus.jackson.jsontoken; importar org.codehaus.jackson.map.jsonmappingException; public class Jacksontester {public static void main (string args []) {Jacksontester tester = new JackSontester (); tente {jsonFactory JasonFactory = new JsonFactory (); JsonGenerator JsonGenerator = JasonFactory.CreateJsonGenerator (New File ("Student.json"), jsonEncoding.utf8); jsongnerator.WriteStarTObject (); Jsongenerator.WritEstringField ("Nome", "Mahesh Kumar"); Jsongenerator.Writenumberfield ("Age", 21); Jsongenerator.WriteBooleanfield ("verificado", falso); Jsongenerator.WriteFieldName ("Marks"); jsongnerator.writestartarray (); // [jsongenerator.writenumber (100); jsongenerator.writenumber (90); Jsongenerator.writenumber (85); jsongnerator.WriteEndArray (); jsongenerator.WriteEndObject (); jsongenerator.close (); // Result Student.json // {// "name": "mahesh kumar", // "idade": 21, // "verificado": false, // "Marks": [100,90,85] //} jsonparser JSONPARSER = JasonFactory.createjsonParser (novo arquivo ".json " while (jsonparser.NextToken ()! = JSONTOKEN.END_OBJECT) {// Obtenha o token string atual FieldName = jsonparser.getCurrentName (); if ("name" .equals (fieldname)) {// mova -se para o próximo token jsonparser.nextToken (); System.out.println (jsonparser.getText ()); } if ("idade" .equals (fieldname)) {// mova -se para o próximo token jsonparser.nextToken (); System.out.println (jsonparser.getNumberValue ()); } if ("verificado" .equals (fieldname)) {// mova -se para o próximo token jsonparser.nextToken (); System.out.println (jsonparser.getBooleanValue ()); } if ("Marks" .equals (fieldname)) {// mova -se para [jsonparser.nextToken (); // LOOP TOKEN TOKEN Igual a "]" while (jsonparser.NextToken ()! }}}} catch (jsonparseException e) {e.printStackTrace (); } catch (jsonMappingException e) {E.printStackTrace (); } catch (ioexception e) {e.printStackTrace (); }}}Resultados da verificação
Compilar Use Javac para compilar as seguintes classes:
A cópia do código é a seguinte:
C:/Jackson_workspace> javac jacksontester.java
Agora execute Jacksontoster e veja o resultado da seguinte maneira:
A cópia do código é a seguinte:
C:/Jackson_workspace> Java Jacksontester
Verifique a saída
Mahesh Kumar21false [100, 90, 85]