Джексон - Модель дерева

Модель дерева подготавливает древовидное представление документа 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