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

Làm cách nào để giải mã hóa chuỗi JSON bằng cách sử dụng chú thích @JsonCreator trong Java?


@JsonProperty chú thích có thể được sử dụng để chỉ ra tên thuộc tính trong JSON. Chú thích này có thể được sử dụng cho hàm tạo hoặc phương pháp xuất xưởng . @JsonCreator chú thích hữu ích trong các trường hợp @JsonSetter không thể sử dụng chú thích. Ví dụ:các đối tượng không thay đổi không có bất kỳ phương thức setter nào, vì vậy chúng cần các giá trị ban đầu được đưa vào hàm tạo.

@JsonProperty - Khối mã lệnh

Ví dụ

import com.fasterxml.jackson.annotation.*;
import java.io.IOException;
import com.fasterxml.jackson.databind.*;
public class JsonCreatorTest1 {
   public static void main(String[] args) throws IOException {
      ObjectMapper om = new ObjectMapper();
      String jsonString = "{\"id\":\"101\", \"fullname\":\"Ravi Chandra\", \"location\":\"Pune\"}";
      System.out.println("JSON: " + jsonString);
      Customer customer = om.readValue(jsonString, Customer.class);
      System.out.println(customer);
   }
}
// Customer class
class Customer {
   private String id;
   private String name;
   private String address;
   public Customer() {
   }
   @JsonCreator
   public Customer(
      @JsonProperty("id") String id,
      @JsonProperty("fullname") String name,  
      @JsonProperty("location") String address) {
      this.id = id;
      this.name = name;
      this.address = address;
   }
   @Override
   public String toString() {
      return "Customer [id=" + id + ", name=" + name + ", address=" + address + "]";
   }
}

Đầu ra

JSON: {"id":"101", "fullname":"Ravi Chandra", "location":"Pune"}
Customer [id=101, name=Ravi Chandra, address=Pune]


@ JsonCreator - Phương pháp ban đầu

Ví dụ

import com.fasterxml.jackson.annotation.*;
import java.io.IOException;
import com.fasterxml.jackson.databind.*;
public class JsonCreatorTest2 {
   public static void main(String[] args) throws IOException {
      ObjectMapper mapper = new ObjectMapper();
      String jsonString = "{\"id\":\"102\", \"fullname\":\"Raja Ramesh\",          \"location\":\"Hyderabad\"}";
      System.out.println("JSON: " + jsonString);
      Customer customer = mapper.readValue(jsonString, Customer.class);
      System.out.println(customer);
   }
}
// Customer class
class Customer {
   private String id;
   private String name;
   private String address;
   public Customer() {
   }
   @JsonCreator
   public static Customer createCustomer(
      @JsonProperty("id") String id,
      @JsonProperty("fullname") String name,
   @JsonProperty("location") String address) {
      Customer customer = new Customer();
      customer.id = id;
      customer.name = name;
      customer.address = address;
      return customer;
   }
   @Override
   public String toString() {
         return "Customer [id=" + id + ", name=" + name + ", address=" + address + "]";
   }
}

Đầu ra

JSON: {"id":"101", "fullname":"Raja Ramesh", "location":"Hyderabad"}
Customer [id=102, name=Raja Ramesh, address=Hyderabad]