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

Làm cách nào để ánh xạ dữ liệu JSON với Mô hình đối tượng Jackson trong Java?


ObjectMapper lớp cung cấp chức năng để chuyển đổi giữa các đối tượng Java và các cấu trúc JSON phù hợp. Chúng tôi có thể lập bản đồ dữ liệu JSON được đại diện bởi Mô hình đối tượng tới một đối tượng Java cụ thể bằng cách sử dụng giống cây cấu trúc dữ liệu đọc và lưu trữ toàn bộ nội dung JSON trong bộ nhớ. Trong bước đầu tiên, hãy đọc dữ liệu JSON vào JsonNode đối tượng sau đó ánh xạ nó đến một phiên bản khác bằng cách gọi treeToValue () phương thức của ObjectMapper lớp học.

Cú pháp

public <T> T treeToValue(TreeNode n, Class<T> valueType) throws JsonProcessingException

Ví dụ

import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
public class JsonTreeModelDemo {
   public static void main(String[] args) throws JsonProcessingException, IOException {
      String jsonString = "{\"id\":\"102\", \"name\":\"Raja Ramesh\", \"address\":[{\"area\":\"Madhapur\", \"city\":\"Hyderabad\"}]}";
      ObjectMapper objectMapper = new ObjectMapper();
      JsonNode jsonNode = objectMapper.readTree(jsonString);
      User user = objectMapper.treeToValue(jsonNode, User.class);
      System.out.println(user);
   }
}
// User class
class User {
   private int id;
   private String name;
   private Address[] address;
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public Address[] getAddress() {
      return address;
   }
   public void setAddress(Address[] address) {
      this.address = address;
   }
   @Override
   public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("{");
      sb.append(id).append(",");
      sb.append(name).append(",");
      for(Address address1 : address) {
         sb.append(address1).append(",");
      }
      sb.append("}");
      return sb.toString();
   }
}
// Address class
class Address {
   private String area;
   private String city;
   public String getArea() {
      return area;
   }
   public void setArea(String area) {
      this.area = area;
   }
   public String getCity() {
      return city;
   }
   public void setCity(String city) {
      this.city = city;
   }
   @Override
   public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("{");
      sb.append(area).append(",");
      sb.append(city);
      sb.append("}");
      return sb.toString();
   }
}

Đầu ra

{102,Raja Ramesh,{Madhapur,Hyderabad},}