我有一个嵌套的json,我需要用一个过滤器删除数组中的一些对象,这是一个动态的方式,这个json结构并不总是相同的,例如:
{
"A": "HI",
"B": 1,
"C": [
{
"TIME": "TODAY",
"LOCATION": "USA",
"BALANCE": 100,
"STATE": "TX",
"NAME": "JHON"
},
{
"TIME": "YESTERDAY",
"LOCATION": "USA",
"BALANCE": 100,
"STATE": "TX",
"NAME": "MICHAEL"
},
{
"TIME": "YESTERDAY",
"LOCATION": "USA",
"BALANCE": 100,
"STATE": "TX",
"NAME": "REBECCA"
}
]
}
现在,从这种嵌套的json中,我想删除包含键“name”和值“michael”的对象,结果是:
{
"A": "HI",
"B": 1,
"C": [
{
"TIME": "TODAY",
"LOCATION": "USA",
"BALANCE": 100,
"STATE": "TX",
"NAME": "JHON"
},
{
"TIME": "YESTERDAY",
"LOCATION": "USA",
"BALANCE": 100,
"STATE": "TX",
"NAME": "REBECCA"
}
]
}
每次json都会发生变化,这取决于api的响应,只是我需要匹配key-value来删除我需要过滤的对象,而不需要修改json结构,在这种情况下,我需要接收key=“name”和value=“michael”来过滤这个对象。
在这种情况下,“c”是一个变量键,我可以在同一个json中有更多需要过滤的带有数组的键,我需要一种动态的方法来过滤基于键值的对象数组
你能帮我找到一个实现这个功能的方法吗?
1条答案
按热度按时间wqnecbli1#
这是一个流解决方案,可以处理巨大的响应,而不会对您的系统造成任何重大影响。它也不需要任何使用内置json节点表示的类Map(因此在类型绑定上节省时间和内存)。
测试:
当然,这不是那么容易,但它可能会导致最好的表现。使它通用和“动态”是一个选择,它可以根据您的需要。如果您发现它太复杂,那么输入的json文档就不会很大(因此
OutOfMemoryError
s) ,也可以将其作为树进行筛选,但同样不需要任何类型绑定:测试: