杰克逊将 getter 用于特定的 属性

Jackson use getter for a specific property

我在实体中有一个 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;
}


}

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

本质上,用 @JsonSerialize(using = CustomSerializer.class) 注释您的 POJO,然后实现从 JsonSerializer 扩展的 class CustomSerializer。在您的实施中,您可以根据自己的喜好构建 JSON 并即时计算值或调用您的 getters。

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