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

Làm thế nào để xác định các tên thay thế cho một trường bằng cách sử dụng Jackson trong Java?


@JsonAlias ​​ chú thích có thể xác định một hoặc nhiều tên thay thế đối với các thuộc tính được chấp nhận trong quá trình giải mã hóa, thiết lập dữ liệu JSON thành một đối tượng Java. Nhưng khi tuần tự hóa, tức là nhận JSON từ một đối tượng Java, chỉ tên thuộc tính logic thực tế được sử dụng thay vì bí danh .

Cú pháp

@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER})
@Retention(value=RUNTIME)
public @interface JsonAlias

Ví dụ

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import java.io.*;
public class ObjectToJsonTest {
   public static void main(String[] args) throws JsonProcessingException {
      ObjectMapper mapper = new ObjectMapper();
      Technology tech = new Technology("Java", "Oracle");
      Employee emp = new Employee(110, "Raja", tech);
      String jsonWriter = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp);
      System.out.println(jsonWriter);
   }
}
// Technology class
class Technology {
   @JsonProperty("skill")
   private String skill;
   @JsonProperty("subSkill")
   @JsonAlias({"sSkill", "mySubSkill"})
   private String subSkill;
   public Technology(){}
   public Technology(String skill, String subSkill) {
      this.skill = skill;
      this.subSkill = subSkill;
   }
   public String getSkill() {
      return skill;
   }
   public void setSkill(String skill) {
      this.skill = skill;
   }
   public String getSubSkill() {
      return subSkill;
   }
   public void setSubSkill(String subSkill) {
      this.subSkill = subSkill;
   }
}
// Employee class
class Employee {
   @JsonProperty("empId")
   private Integer id;
   @JsonProperty("empName")
   @JsonAlias({"ename", "myename"})
   private String name;
   @JsonProperty("empTechnology")
   private Technology tech;
   public Employee(){}
   public Employee(Integer id, String name, Technology tech){
      this.id = id;
      this.name = name;
      this.tech = tech;
   }
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public Technology getTechnology() {
      return tech;
   }
   public void setTechnology(Technology tech) {
      this.tech = tech;
   }
}

Đầu ra

{
 "technology" : {
 "skill" : "Java",
 "subSkill" : "Oracle"
 },
 "empId" : 110,
 "empName" : "Raja",
 "empTechnology" : {
 "skill" : "Java",
 "subSkill" : "Oracle"
 }
}