一尘不染

如何告诉Jackson忽略我无法控制源代码的属性?

json

长话短说,我的一个实体有一个GeometryCollection,当您调用“
getBoundary”时会引发异常(这是另一本书的原因,现在让我们说这是它的工作方式)。

有没有办法让我告诉Jackson不要包括那个特定的吸气剂?我知道自己拥有/控制代码时可以使用@JacksonIgnore。但是,事实并非如此,Jackson通过父对象的连续序列化结束了这一点。我在杰克逊文档中看到了一个过滤选项。这是一个可行的解决方案吗?

谢谢!


阅读 306

收藏
2020-07-27

共1个答案

一尘不染

您可以使用Jackson Mixins。例如:

class YourClass {
  public int ignoreThis() { return 0; }    
}

与此混合

abstract class MixIn {
  @JsonIgnore abstract int ignoreThis(); // we don't need it!  
}

有了这个:

objectMapper.getSerializationConfig().addMixInAnnotations(YourClass.class, MixIn.class);

编辑:

多亏了注释,在Jackson 2.5+中,API发生了变化,应使用objectMapper.addMixIn(Class<?> target, Class<?> mixinSource)

2020-07-27