杰克逊将 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 字段,除非有最新的东西。
我在实体中有一个 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 字段,除非有最新的东西。