Jackson - Mô hình cây

Mô hình cây chuẩn bị một biểu diễn cây trong bộ nhớ của tài liệu JSON. Cây xây dựng ObjectMapper của các nút JsonNode. Đó là cách tiếp cận linh hoạt nhất. Nó tương tự như trình phân tích cú pháp DOM cho XML.

Tạo cây từ JSON

ObjectMapper cung cấp một con trỏ tới nút gốc của cây sau khi đọc JSON. Root Node có thể được sử dụng để duyệt toàn bộ cây. Hãy xem xét đoạn mã sau để lấy nút gốc của Chuỗi JSON được cung cấp.

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

Mô hình cây đi ngang

Nhận từng nút bằng cách sử dụng đường dẫn tương đối đến nút gốc trong khi duyệt cây và xử lý dữ liệu. Hãy xem xét đoạn mã sau đi ngang qua cây được cung cấp nút gốc.

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

Thí dụ

Tạo tệp lớp java có tên JacksonTester trong C:\>Jackson_WORKSPACE.

Tệp: 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

Biên dịch các lớp bằng cách sử dụng javac trình biên dịch như sau:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Bây giờ hãy chạy jacksonTester để xem kết quả:

C:\Jackson_WORKSPACE>java JacksonTester

Xác minh đầu ra

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

Cây sang JSON

Tree to Java Objects