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