Jackson - Modello ad albero

Tree Model prepara una rappresentazione ad albero in memoria del documento JSON. ObjectMapper crea la struttura ad albero dei nodi JsonNode. È l'approccio più flessibile. È analogo al parser DOM per XML.

Crea albero da JSON

ObjectMapper fornisce un puntatore al nodo radice dell'albero dopo aver letto il JSON. Il nodo radice può essere utilizzato per attraversare l'intero albero. Considera il seguente frammento di codice per ottenere il nodo radice di una stringa JSON fornita.

//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);

Modello di albero trasversale

Ottieni ogni nodo utilizzando il percorso relativo al nodo radice mentre attraversi l'albero ed elabora i dati. Considera il seguente frammento di codice che attraversa l'albero fornito il nodo radice.

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

Esempio

Crea un file di classe java denominato JacksonTester in C:\>Jackson_WORKSPACE.

File: 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 le classi usando javac compilatore come segue:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Ora esegui il jacksonTester per vedere il risultato:

C:\Jackson_WORKSPACE>java JacksonTester

Verifica l'output

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

Albero in JSON

Albero agli oggetti Java