我有一个配置文件,可以有以下几行:
排除employee.dept。*
包括student.dept。*
因此,基于该文件中的值,我需要在序列化的JSON中抑制或包含这些属性。我看了实现BeanPropertyFilter,但是没有给我关于父节点的详细信息,即我只知道我正在序列化dept.deptCode但是我不知道dept节点的父节点,它可以是雇员或学生。知道如何实现这个功能吗?
答案 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作为源或目标。