这是一个简单的例子: 假设我有两个类,MyEntity和Person:
public class MyEntity {
long id;
String name;
}
public class Person extends MyEntity {
String lastName;
int age;
// other fields
}
到目前为止没问题。现在我希望使用Jackson注释将它们解析为JSON。假设我有许多扩展MyEntity的其他实体,并且所有实体都有JSON字段name
,但特别是name
必须在lastName
类中解析为Person
。有没有办法做到这一点?对我来说合乎逻辑的是一个注释(我编写了这段代码!!只是为了得到这个想法):
@JSONFieldValue(subClass = Person.class, field = "name", JSONName = "lastName")
public class MyEntity{}
你们知道有什么方法可以达到这样的目的吗?
提前致谢!
答案 0 :(得分:2)
Jackson默认使用setter方法进行反序列化,并根据Java bean约定通过setter方法名称推断JSON字段名称。
要将名为name
的JSON字段解析为名为lastName
的Java类字段,只需在Person
添加此setter:
void setName(String name) {
lastName = name;
}
或注释Person
中的普通二传手:
@JsonProperty( "name" )
void setLastName(String lastName) {
this.lastName = lastName;
}