【问题标题】:Jackson use getter for a specific property杰克逊对特定属性使用吸气剂
【发布时间】:2015-08-11 14:42:49
【问题描述】:

我在一个实体中有一个 JPA 瞬态属性,该属性具有基于 POJO 中的多个字段的计算值。所有这些计算都是在该属性的 GETTER 中完成的。

但是,Jackson 在为 POJO 创建 JSON 时似乎没有使用 GETTER。

如何配置 Jackson 以对属性使用 getter?

我的 POJO 如下所示

@Entity
public class ProductSummaryEntity implements Serializable {

@Basic
private String field1;
// GETTER and SETTER for Field1


@Basic
private String field2;
// GETTER and SETTER for Field2

@Transient
private String field3;

public String getField3(){
setField3(field1 + field2);
return this.field3;
}

public void setField3(String temp){
this.field3=temp;
}


}

【问题讨论】:

    标签: java json hibernate jpa jackson


    【解决方案1】:

    @sghill 的博客链接之前已经在 SO 上发布过,它向您展示了如何自定义序列化过程:https://www.sghill.net/how-do-i-write-a-jackson-json-serializer-deserializer.html

    基本上,用@JsonSerialize(using = CustomSerializer.class) 注释您的POJO,然后实现一个从JsonSerializer 扩展的类CustomSerializer。在您的实现中,您可以随心所欲地构建 JSON 并即时计算值或调用您的 getter。

    【讨论】:

    • 这是一种方式.. 但我有很多跨多个实体的瞬态字段.. 看看我是否可以将 Jackson 配置为使用 getter 而不是直接访问一般的私有字段。跨度>
    【解决方案2】:

    不,我不认为你可以序列化瞬态字段,除非那里有最新的东西。

    【讨论】:

      猜你喜欢
      • 2013-07-06
      • 1970-01-01
      • 2018-08-16
      • 2013-01-20
      • 1970-01-01
      • 2012-01-31
      • 2018-04-05
      • 2015-07-19
      • 1970-01-01
      相关资源
      最近更新 更多