如何重命名子 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;
}