Джексон - Модель дерева
Модель дерева подготавливает древовидное представление документа JSON в памяти. ObjectMapper строит дерево узлов JsonNode. Это максимально гибкий подход. Это аналог парсера DOM для XML.
Создать дерево из JSON
ObjectMapper предоставляет указатель на корневой узел дерева после чтения JSON. Корневой узел можно использовать для обхода всего дерева. Рассмотрим следующий фрагмент кода, чтобы получить корневой узел предоставленной строки 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);
Обход модели дерева
Получите каждый узел, используя относительный путь к корневому узлу при обходе дерева, и обработайте данные. Рассмотрим следующий фрагмент кода, проходящий по дереву с корневым узлом.
JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.textValue());
JsonNode marksNode = rootNode.path("marks");
Iterator<JsonNode> iterator = marksNode.elements();
пример
Создайте файл класса java с именем JacksonTester в C:\>Jackson_WORKSPACE.
Файл: 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
Скомпилируйте классы, используя javac компилятор следующим образом:
C:\Jackson_WORKSPACE>javac JacksonTester.java
Теперь запустите jacksonTester, чтобы увидеть результат:
C:\Jackson_WORKSPACE>java JacksonTester
Проверить вывод
Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]
Дерево в JSON
Дерево в объекты Java