【问题标题】:How to change @SerializedName, from GSON, of an attribute in a extended class如何从 GSON 更改扩展类中属性的 @SerializedName
【发布时间】:2012-06-01 22:15:27
【问题描述】:

我有这样的课:

class A {
    @Expose
    @SerializedName("a_id")
    private String id;
}

现在我想创建扩展 A 的类 B,但是,在 B 中,我想将 id 的 SerializedName 更改为“b_id”。有没有办法做到这一点?

【问题讨论】:

  • 这不会破坏班级契约吗? B 类对象将是 B 类的实例(由于继承),但不会提供 A 类对象提供的 id 字段...
  • 我理解你的想法,但我不这么认为,因为注释会改变属性的特性,比如 getter 和 setter,所以理论上我可以在子类中做到这一点。
  • 例如,Hibernate 允许我Hibernate inheritance 请参阅“Hibernate 继承:注解映射”,其中 @Inheritance 成功了。我只是想知道GSON是否有同样的功能。

标签: java inheritance annotations gson


【解决方案1】:

开箱即用是不可能的。您需要编写一个自定义类型适配器。请参阅 Gson 用户指南的 Custom Serialization and Deserialization 部分。

【讨论】:

    【解决方案2】:

    将@SerializedName("b_id") 应用到B 中的setter

    B类{ 私有字符串id;

    @SerializedName("b_id")
    private void setId(String id);
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2016-04-17
      • 2018-02-25
      • 2014-05-15
      相关资源
      最近更新 更多