尝试通过使用以下脚本来实现这一点,我想用一个循环来扩展它,以循环通过输入。这应该过滤具有值“valse”的对象,其他的应该被删除/替换。
def Message processData(Message message) {
//getBody & new jsonSlurper
def body = message.getBody(java.lang.String) as String
def data = new JsonSlurper().parseText(body)
if (data.value != "false") {
body = body.replaceAll(~/^(.*?)\childNodes/, "")
message.setBody(body);
} else {
}
return message
}
输入:
[{
"name": "1",
"value": "true",
"childNodes": [{
"name": "2",
"value": "true",
"childNodes": [{
"name": "3",
"value": "false",
"childNodes": [{
"name": "4",
"value": "false"
}]
}]
}]
}]
所需输出:
[{
"name": "3",
"value": "false",
"childNodes": [{
"name": "4",
"value": "false"
}]
}]
2条答案
按热度按时间esyap4oy1#
ghg1uchk2#
假设您每次只有一个子对象,并且您的任务是查找第一个
value=false
节点并将其与所有子节点一起返回,则可以执行以下操作:下面是一个Spock测试(用常规的json字符串替换了pretty字符串,这样就更容易用==来比较字符串)