Jackson - model drzewa

Model drzewa przygotowuje reprezentację drzewa dokumentu JSON w pamięci. Drzewo kompilacji ObjectMapper węzłów JsonNode. Jest to najbardziej elastyczne podejście. Jest analogiem do parsera DOM dla XML.

Utwórz drzewo z formatu JSON

ObjectMapper udostępnia wskaźnik do węzła głównego drzewa po odczytaniu JSON. Węzeł główny może służyć do przechodzenia przez całe drzewo. Rozważ następujący fragment kodu, aby uzyskać węzeł główny podanego ciągu JSON.

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

Model drzewa przechodzenia

Pobierz każdy węzeł przy użyciu ścieżki względnej do węzła głównego podczas przeglądania drzewa i przetwarzania danych. Rozważmy następujący fragment kodu przechodzący przez drzewo pod warunkiem, że jest to węzeł główny.

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

Przykład

Utwórz plik klasy java o nazwie JacksonTester w programie C:\>Jackson_WORKSPACE.

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

Skompiluj klasy przy użyciu javac kompilator w następujący sposób:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Teraz uruchom test jacksonTester, aby zobaczyć wynik:

C:\Jackson_WORKSPACE>java JacksonTester

Sprawdź dane wyjściowe

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

Drzewo do formatu JSON

Drzewo do obiektów Java