Jackson - Modèle d'arbre

Le modèle d'arbre prépare une représentation arborescente en mémoire du document JSON. ObjectMapper crée l'arborescence des nœuds JsonNode. C'est l'approche la plus flexible. Il est analogue à l'analyseur DOM pour XML.

Créer une arborescence à partir de JSON

ObjectMapper fournit un pointeur vers le nœud racine de l'arborescence après avoir lu le JSON. Le nœud racine peut être utilisé pour parcourir l'arborescence complète. Considérez l'extrait de code suivant pour obtenir le nœud racine d'une chaîne JSON fournie.

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

Modèle d'arbre transversal

Obtenez chaque nœud en utilisant le chemin relatif vers le nœud racine tout en parcourant l'arborescence et traitez les données. Considérez l'extrait de code suivant traversant l'arborescence fournie par le nœud racine.

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

Exemple

Créez un fichier de classe Java nommé JacksonTester dans C:\>Jackson_WORKSPACE.

Fichier: 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

Compilez les classes en utilisant javac compilateur comme suit:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Exécutez maintenant le jacksonTester pour voir le résultat:

C:\Jackson_WORKSPACE>java JacksonTester

Vérifiez la sortie

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

Arbre en JSON

Arborescence vers objets Java