[
{
"createTime": "2014-05-12 04:51:46.513343",
"powered": false,
"description": "s",
"current": false,
"children": [
{
"createTime": "2014-05-13 03:50:43.050442",
"powered": false,
"description": "Snapshot description",
"current": false,
"children": [
{
"createTime": "2014-05-13 03:57:08.209319",
"powered": false,
"description": "s",
"current": false,
"children": [
{
"createTime": "2014-05-13 04:27:00.646064",
"powered": false,
"description": "s",
"current": false,
"label": "snap3"
},
{
"createTime": "2014-05-13 21:00:16.374178",
"powered": false,
"description": "sd",
"current": false,
"label": "sddsds"
}
],
"label": "snap2"
}
],
"label": "snapshot-name5"
},
{
"createTime": "2014-05-14 00:49:33.415858",
"powered": false,
"description": "a",
"current": false,
"children": [
{
"createTime": "2014-05-14 02:35:10.076829",
"powered": false,
"description": "sdfsdfsdf",
"current": true,
"label": "ssfsdf"
}
],
"label": "assa"
}
],
"label": "snap1"
}
]
这里我有标签“snap2”作为输入,我需要获取它的子标签(snap3,sddsds)作为输出。我如何在groovy中做到这一点?我搜索了很多东西,但找不到解决方案。
如果我能得到你们中任何人的建议,那就太好了。
最佳答案
假设您的 json 位于字符串 jsonTxt
中,您可以执行以下操作:
def json = new groovy.json.JsonSlurper().parseText( jsonTxt )
def recursiveChildrenScan( map, key, value ) {
if( !map ) { null }
else if( map[ key ] == value ) { map.children }
else { map.children.findResult { recursiveChildrenScan( it, key, value ) } }
}
println json.findResult { recursiveChildrenScan( it, 'label', 'snap2' ) }?.label
关于json - 常规 : how do i search json with key's value and find its children in groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23654646/