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 ]