@JsonAlias 주석은 하나 이상의 대체 이름을 정의할 수 있습니다. 역직렬화 중에 허용되는 속성의 경우 JSON 데이터를 Java 객체로 설정합니다. 그러나 직렬화(예:Java 개체에서 JSON 가져오기)할 때 별칭 대신 실제 논리적 속성 이름만 사용됩니다. .
구문
@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonAlias
예시
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; } }
출력
{ "technology" : { "skill" : "Java", "subSkill" : "Oracle" }, "empId" : 110, "empName" : "Raja", "empTechnology" : { "skill" : "Java", "subSkill" : "Oracle" } }