杰克逊 - 忽略具有特定名称的属性

时间:2017-08-29 18:30:50

标签: java json rest jackson jersey

是否可以根据属性名称将Jackson配置为忽略对象的属性?

我用Jackson序列化Hibernate实体,我的JSON文件中的每个对象都带有" hibernateLazyInitializer"我想忽略的属性。此外,许多课程都有一个" getFieldsValues"我也想忽略的方法。

我知道我可以使用杰克逊注释忽略某些属性,但这将是很多手工。但在这种情况下,我需要IGNORE一个属性,这是许多对象共有的,并由杰克逊自动解析。

1 个答案:

答案 0 :(得分:0)

根据评论中的更新问题说明,我会尝试提供更好的参考:

  • 使用注释是最干净的方式,如有关hibernate增强POJO的几篇帖子所述
  • 可能也满足的东西是在ObjectMapper中设置它,这应该导致空(但现在)字段 - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);。也许如果你将它与objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 结合起来,它可能会完全消除这些字段。
  • 最后,一种替代(但不好)的方法是通过注册为所有类型的POJO应用JsonSerializer<T>实例的模块来修改杰克逊的行为。在这种情况下,您将手动取消设置使用defaultSerializer创建的创建的JsonNode中的字段。再次,这是一个坏主意。