Jackson - Modelo de árbol

Tree Model prepara una representación de árbol en memoria del documento JSON. Árbol de construcción de ObjectMapper de nodos JsonNode. Es el enfoque más flexible. Es análogo al analizador DOM para XML.

Crear árbol desde JSON

ObjectMapper proporciona un puntero al nodo raíz del árbol después de leer el JSON. El nodo raíz se puede utilizar para recorrer el árbol completo. Considere el siguiente fragmento de código para obtener el nodo raíz de una cadena JSON proporcionada.

//Create an ObjectMapper instance
ObjectMapper mapper = new ObjectMapper();	
String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
//create tree from JSON
JsonNode rootNode = mapper.readTree(jsonString);

Modelo de árbol transversal

Obtenga cada nodo usando la ruta relativa al nodo raíz mientras atraviesa el árbol y procesa los datos. Considere el siguiente fragmento de código que atraviesa el árbol proporcionado por el nodo raíz.

JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.textValue());
 
JsonNode marksNode = rootNode.path("marks");
Iterator<JsonNode> iterator = marksNode.elements();

Ejemplo

Cree un archivo de clase java llamado JacksonTester en C:\>Jackson_WORKSPACE.

Archivo: JacksonTester.java

import java.io.IOException;
import java.util.Iterator;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTester {
   public static void main(String args[]){

      try {
         ObjectMapper mapper = new ObjectMapper();
         String jsonString = "{\"name\":\"Mahesh Kumar\",  \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
         JsonNode rootNode = mapper.readTree(jsonString);

         JsonNode nameNode = rootNode.path("name");
         System.out.println("Name: "+ nameNode.textValue());

         JsonNode ageNode = rootNode.path("age");
         System.out.println("Age: " + ageNode.intValue());

         JsonNode verifiedNode = rootNode.path("verified");
         System.out.println("Verified: " + (verifiedNode.booleanValue() ? "Yes":"No"));

         JsonNode marksNode = rootNode.path("marks");
         Iterator<JsonNode> iterator = marksNode.elements();
         System.out.print("Marks: [ ");

         while (iterator.hasNext()) {
            JsonNode marks = iterator.next();
            System.out.print(marks.intValue() + " "); 
         }

         System.out.println("]");
      }
      catch (JsonParseException e) { e.printStackTrace(); }
      catch (JsonMappingException e) { e.printStackTrace(); }
      catch (IOException e) { e.printStackTrace(); }
   }
}

Verify the result

Compila las clases usando javac compilador de la siguiente manera:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Ahora ejecute jacksonTester para ver el resultado:

C:\Jackson_WORKSPACE>java JacksonTester

Verificar la salida

Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]

Árbol a JSON

Árbol a objetos Java