Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để truy cập các trường JSON, mảng và các đối tượng lồng nhau của JsonNode trong Java?


A JsonNode mô hình cây của Jackson cho JSON và nó có thể đọc JSON thành một phiên bản JsonNode và ghi một JsonNode ra JSON. Để đọc JSON thành JsonNode với Jackson bằng cách tạo ObjectMapper ví dụ và gọi readValue () phương pháp. Chúng tôi có thể truy cập một trường, mảng hoặc đối tượng lồng nhau bằng cách sử dụng get () phương thức của JsonNode lớp. Chúng tôi có thể trả về biểu diễn chuỗi hợp lệ bằng cách sử dụng asText () và chuyển đổi giá trị của nút thành Java int bằng cách sử dụng asInt () phương thức của JsonNode lớp học.

Trong ví dụ dưới đây, chúng ta có thể truy cập các trường JSON, mảng và các đối tượng lồng nhau của JsonNode.

Ví dụ

import com.fasterxml.jackson.databind.*;
import java.io.*;
public class ParseJSONNodeTest {
   public static void main(String args[]) {
      String jsonStr = "{ \"name\" : \"Raja\", \"age\" : 30," +
                       " \"technologies\" : [\"Java\", \"Scala\", \"Python\"]," +
                       " \"nestedObject\" : { \"field\" : \"value\" } }";
      ObjectMapper objectMapper = new ObjectMapper();
      try {
         JsonNode node = objectMapper.readValue(jsonStr, JsonNode.class);
         JsonNode nameNode = node.get("name");
         String name = nameNode.asText();
         System.out.println(name);
         JsonNode ageNode = node.get("age");
         int age = ageNode.asInt();
         System.out.println(age);
         JsonNode array = node.get("technologies");
         JsonNode jsonNode = array.get(1);
         String techStr = jsonNode.asText();
         System.out.println(techStr);
         JsonNode child = node.get("nestedObject");
         JsonNode childField = child.get("field");
         String field = childField.asText();
         System.out.println(field);
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Đầu ra

Raja
30
Scala
value