如何告诉 Jackson 忽略我无法控制源代码的属性?
长话短说,我的一个实体有一个GeometryCollection,当你调用“getBoundary”时会抛出一个异常(为什么这是另一本书,现在让我们说这是它的工作方式)。
有没有办法告诉杰克逊不要包括那个特定的getter?我知道我可以在拥有/控制代码时使用@JacksonIgnore。但事实并非如此,Jackson 通过父对象的连续序列化最终到达了这一点。我在杰克逊文档中看到一个过滤选项。这是一个合理的解决方案吗?
谢谢!
长话短说,我的一个实体有一个GeometryCollection,当你调用“getBoundary”时会抛出一个异常(为什么这是另一本书,现在让我们说这是它的工作方式)。
有没有办法告诉杰克逊不要包括那个特定的getter?我知道我可以在拥有/控制代码时使用@JacksonIgnore。但事实并非如此,Jackson 通过父对象的连续序列化最终到达了这一点。我在杰克逊文档中看到一个过滤选项。这是一个合理的解决方案吗?
谢谢!
您可以使用Jackson Mixins。例如:
class YourClass {
public int ignoreThis() { return 0; }
}
有了这个 Mixin
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)
另一种可能性是,如果要忽略所有未知属性,可以按如下方式配置映射器:
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);