
The @JsonAlias annotation can define one or more alternate names for the attributes accepted during the deserialization, setting the JSON data to a Java object. But when serializing, i.e. getting JSON from a Java object, only the actual logical property name is used instead of the alias.
<strong>@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER})
@Retention(value=RUNTIME)
public @interface JsonAlias</strong>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 {
<strong>ObjectMapper </strong>mapper = new <strong>ObjectMapper()</strong>;
Technology tech = new Technology("Java", "Oracle");
Employee emp = new Employee(110, "Raja", tech);
String jsonWriter = mapper.<strong>writerWithDefaultPrettyPrinter().writeValueAsString(emp);</strong>
System.out.println(jsonWriter);
}
}
<strong>// Technology class
</strong>class Technology {
<strong> @JsonProperty("skill")
</strong> private String skill;
<strong> @JsonProperty("subSkill")
</strong><strong> @JsonAlias({"sSkill", "mySubSkill"})
</strong> 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;
}
}
<strong>// Employee class
</strong>class Employee {
<strong> @JsonProperty("empId")
</strong> private Integer id;
<strong> @JsonProperty("empName")
</strong><strong> @JsonAlias({"ename", "myename"})
</strong> private String name;
<strong> @JsonProperty("empTechnology")
</strong> 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;
}
}<strong>{
"technology" : {
"skill" : "Java",
"subSkill" : "Oracle"
},
"empId" : 110,
"empName" : "Raja",
"empTechnology" : {
"skill" : "Java",
"subSkill" : "Oracle"
}
}</strong>以上就是如何使用Jackson在Java中为字段定义替代名称?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号