@JsonAlias
可指定属性的一个或多个别名,只用于反序列化。
别名和重命名不同,别名是添加其他的名称,而重命名是修改名称。
public class Employee {
private String name;
@JsonAlias({"department", "employeeDept" })
private String dept;
...
}
public class ExampleMain {
public static void main(String[] args) throws IOException {
ObjectMapper om = new ObjectMapper();
System.out.println("-- deserializing --");
// 别名
String jsonData = "{\"name\":\"Trish\",\"department\":\"IT\"}";
Employee employee = om.readValue(jsonData, Employee.class);
System.out.println(employee);
// 别名
jsonData = "{\"name\":\"Trish\",\"employeeDept\":\"IT\"}";
employee = om.readValue(jsonData, Employee.class);
System.out.println(employee);
// 字段名
jsonData = "{\"name\":\"Trish\",\"dept\":\"IT\"}";
employee = om.readValue(jsonData, Employee.class);
System.out.println(employee);
System.out.println("-- serializing --");
Employee e = Employee.of("Jake", "Admin");
String s = om.writeValueAsString(e);
System.out.println(s);
}
}
-- deserializing --
Employee{name='Trish', dept='IT'}
Employee{name='Trish', dept='IT'}
Employee{name='Trish', dept='IT'}
-- serializing --
{"name":"Jake","dept":"Admin"}
原文链接
Jackson JSON - Using @JsonAlias Annotation to define property aliases for deserialization