从 JSON 中的多值元素中过滤单个元素
Filter single element from a multi value element in JSON
在我的测试中,我需要比较预期和实际的 JSON 响应。但是 JSON 响应是有限的,具体取决于角色。所以我需要在比较时排除某些字段。
下面是 JSON,我想从中过滤掉 2 个东西。
1.公司编号
2.状态。
{
userId=dg4d6g4dg45-rgdre-543-dfg,
userName=test123,
effectives=[
{
companyId=345634-54-547-74,
companyName=xyz,
roleId=685-345863490-634,
roleName=This is the test Role
},
{
companyId=345634-54-547-74,
companyName=xyz,
roleId=685-345863490-634,
roleName=This is the test Role
}
],
status=Active
}
你能告诉我如何实现这一点吗?
我探索了 SimpleBeanPropertyFilter 的 filterOutAllExcep 方法,但随后我将不得不找出逻辑来记住所有应该包含的字段。
我想我已经找到了解决办法。
我正在使用对象映射器并将数据模型转换为地图。
然后迭代地图并删除字段。
平面过滤很简单,但必须为嵌套字段调整一些逻辑。
// Convert the DataModel into a Map object
ObjectMapper mapper = new ObjectMapper();
Map mainObjectMap = mapper.convertValue(object, Map.class);
在我的测试中,我需要比较预期和实际的 JSON 响应。但是 JSON 响应是有限的,具体取决于角色。所以我需要在比较时排除某些字段。
下面是 JSON,我想从中过滤掉 2 个东西。
1.公司编号
2.状态。
{
userId=dg4d6g4dg45-rgdre-543-dfg,
userName=test123,
effectives=[
{
companyId=345634-54-547-74,
companyName=xyz,
roleId=685-345863490-634,
roleName=This is the test Role
},
{
companyId=345634-54-547-74,
companyName=xyz,
roleId=685-345863490-634,
roleName=This is the test Role
}
],
status=Active
}
你能告诉我如何实现这一点吗? 我探索了 SimpleBeanPropertyFilter 的 filterOutAllExcep 方法,但随后我将不得不找出逻辑来记住所有应该包含的字段。
我想我已经找到了解决办法。 我正在使用对象映射器并将数据模型转换为地图。 然后迭代地图并删除字段。 平面过滤很简单,但必须为嵌套字段调整一些逻辑。
// Convert the DataModel into a Map object
ObjectMapper mapper = new ObjectMapper();
Map mainObjectMap = mapper.convertValue(object, Map.class);