java中备用字段_如何在Java中使用Jackson来为字段定义备用名称?

@JsonAlias注释可以定义一个或多个替代的名称为反序列化过程中接受了属性,JSON数据设置为Java对象。但是,在进行序列化(即从Java对象获取JSON)时,仅使用实际的逻辑属性名称,而不使用alias。

语法@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 classclass 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 classclass 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"

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值