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