【发布时间】:2014-11-28 00:50:55
【问题描述】:
我们在整个应用程序中使用 jackson 将 Java 对象序列化和反序列化为 JSON。它工作得很好。
是否可以通过自定义序列化程序仅序列化使用自定义注释进行注释的 Java 对象的属性?
所以,给定自定义注释:
public @interface SpecialField {}
还有下面的豆子
public SomeBean {
@SpecialField
private Object propertyIncluded;
private Object propertyExcluded;
}
自定义序列化程序(或某些等效机制)会如何序列化 propertyIncluded(使用普通的 jackson 对象映射器)并忽略 propertyExcluded?
我们不能在这个用例中使用标准的杰克逊注解 (@JsonIgnore),因为它会破坏我们在应用程序中的其他序列化用例。
【问题讨论】:
-
你可以让jackson符合transient关键字,或者使用@JsonIgnore来看看:stackoverflow.com/questions/21745593/…
-
看来你的答案可能在这里stackoverflow.com/questions/7105745/…
-
我们不能在这个用例中使用 @JsonIgnore,因为它会破坏我们对 Jackson 序列化这些对象的其他用途。
-
所以您只想在一个实例中使它们瞬态,而在其他实例中序列化这些字段?
-
@MarkW,在这个特定的例子中,我们只想序列化带有给定注释的字段。我们不想使用
@Transient或@JsonIgnore,因为它们已经被使用并且对其他地方的正常序列化有意义(应该如此)。