我有一个配置文件可以有以下几行:
exclude employee.dept.*
include student.dept.*
因此,根据该文件中的值,我需要在序列化 JSON 中抑制或包含这些属性。我查看了实现 BeanPropertyFilter 但这并没有给我有关父节点的详细信息,即我只知道我正在序列化 dept.deptCode 但我不知道 dept 节点的父节点,它可能是员工或学生. 知道如何实现该功能吗?
我有一个配置文件可以有以下几行:
exclude employee.dept.*
include student.dept.*
因此,根据该文件中的值,我需要在序列化 JSON 中抑制或包含这些属性。我查看了实现 BeanPropertyFilter 但这并没有给我有关父节点的详细信息,即我只知道我正在序列化 dept.deptCode 但我不知道 dept 节点的父节点,它可能是员工或学生. 知道如何实现该功能吗?
您最好的选择可能是使用树模型;也就是说,将 JSON 读取为JsonNode
:
JsonNode root = new ObjectMapper().readTree(jsonSource);
然后处理过滤。尝试使用配置文件进行数据绑定可能是解决此问题的更困难的方法。
请注意,您可以根据需要轻松地在JsonNode
和 POJO 类型之间进行转换:
MyObject ob = mapper.treeToValue(root, MyObject.class);
JsonNode tree = mapper.valueToTree(ob);
因此可以使用 JSON 树完成转换和翻译,但您仍然可以使用 POJO 作为源或目标。