【问题标题】:How to rename JSON properties on child class如何重命名子类的 JSON 属性
【发布时间】:2017-06-29 12:42:51
【问题描述】:

这里有一个简单的例子: 假设我有两个类,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。有没有办法做到这一点?对我来说合乎逻辑的是这样的注释(我编写了这段代码!!只是为了得到这个想法):

@JSONFieldValue(subClass = Person.class, field = "name", JSONName = "lastName")
public class MyEntity{}

你们知道有什么方法可以实现这样的目标吗?

提前致谢!

【问题讨论】:

    标签: java json annotations jackson fasterxml


    【解决方案1】:

    Jackson 默认使用 setter 方法进行反序列化,并根据 Java beans 约定通过 setter 方法名称推断 JSON 字段名称。

    要将名为 name 的 JSON 字段解析为名为 lastName 的 Java 类字段,只需在 Person 处添加此设置器:

    void setName(String name) {
        lastName = name;
    }
    

    或者在Person中注解普通的setter:

    @JsonProperty( "name" )
    void setLastName(String lastName) {
        this.lastName = lastName;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多