如何使用Jackson在Java中为字段定义替代名称?

如何使用Jackson在Java中为字段定义替代名称?

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

Example

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; } }登录后复制