杰克逊的分层过滤

时间:2013-09-05 19:33:58

标签: jackson

我有一个配置文件,可以有以下几行:
    排除employee.dept。*
    包括student.dept。*

因此,基于该文件中的值,我需要在序列化的JSON中抑制或包含这些属性。我看了实现BeanPropertyFilter,但是没有给我关于父节点的详细信息,即我只知道我正在序列化dept.deptCode但是我不知道dept节点的父节点,它可以是雇员或学生。知道如何实现这个功能吗?

1 个答案:

答案 0 :(得分:1)

你最好的选择可能是使用树模型;也就是说,将JSON读作JsonNode

JsonNode root = new ObjectMapper().readTree(jsonSource);

然后处理过滤。尝试使用配置文件使用数据绑定可能是解决此问题的更难的方法。

请注意,您可以根据需要轻松地在JsonNode和POJO类型之间进行转换:

MyObject ob = mapper.treeToValue(root, MyObject.class);
JsonNode tree = mapper.valueToTree(ob);

这样可以使用JSON树完成转换和转换,但您仍然可以使用POJO作为源或目标。