如何重命名子 class 的 JSON 属性
How to rename JSON properties on child class
这是一个简单的例子:
假设我有两个 classes,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
必须在 Person
中解析为 lastName
class。有什么办法吗?对我来说合乎逻辑的是这样的注释(我编写了这段代码!!只是为了理解这个想法):
@JSONFieldValue(subClass = Person.class, field = "name", JSONName = "lastName")
public class MyEntity{}
你们知道有什么方法可以实现这样的目标吗?
提前致谢!
Jackson 默认使用 setter 方法进行反序列化,并根据 Java beans 约定通过 setter 方法名称推断 JSON 字段名称。
要将名为 name
的 JSON 字段解析为名为 lastName
的 Java class 字段,只需将此 setter 添加到 Person
:
void setName(String name) {
lastName = name;
}
或者在Person
中注释正常的setter:
@JsonProperty( "name" )
void setLastName(String lastName) {
this.lastName = lastName;
}
这是一个简单的例子: 假设我有两个 classes,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
必须在 Person
中解析为 lastName
class。有什么办法吗?对我来说合乎逻辑的是这样的注释(我编写了这段代码!!只是为了理解这个想法):
@JSONFieldValue(subClass = Person.class, field = "name", JSONName = "lastName")
public class MyEntity{}
你们知道有什么方法可以实现这样的目标吗?
提前致谢!
Jackson 默认使用 setter 方法进行反序列化,并根据 Java beans 约定通过 setter 方法名称推断 JSON 字段名称。
要将名为 name
的 JSON 字段解析为名为 lastName
的 Java class 字段,只需将此 setter 添加到 Person
:
void setName(String name) {
lastName = name;
}
或者在Person
中注释正常的setter:
@JsonProperty( "name" )
void setLastName(String lastName) {
this.lastName = lastName;
}