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

标签 java json jackson

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

有没有办法告诉 jackson 不要包含那个特定的 setter/getter ?我知道当我拥有/控制代码时可以使用@JacksonIgnore。但情况并非如此,jackson 通过对父对象的不断序列化来结束这一点。我在 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) 调用

关于java - 我如何告诉 jackson 忽略我无法控制源代码的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421474/

相关文章:

java - JSON 输出包含星号而不是值

java - 不使用 Java 创建实际文件的 FileInputStream

xml - xsl 将 xml 转换为 json

java - 为什么在带有 Java 8 日期的 Jackson 的 ObjectMapper 中使用 dateFormat 时不从 JSON 中排除毫秒?

json - 即使类型具有派生(序列化),也不满足特征绑定(bind)序列化

javascript - 我如何为返回的 Json 动态创建 ajax 链接

java - Rest Webservice 传递并接受 List<String>

java - 无法在 Eclipse 中找到 svn 选项?

java - HTTPServletRequest.getParameterNames() 的顺序与 HTML 表单中不同

java - 如何测试 JBoss 服务器是从外部 java 应用程序启动的