json - 常规 : how do i search json with key's value and find its children in groovy

标签 json groovy

[
{
    "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/

相关文章:

javascript - 如何获取jquery数据表中的嵌套数组数据

json - 将多边形 json 坐标转换为 data.frame

ios - 遍历数组时遇到问题

groovy - 梯度错误 "Execution failed for task ' :app:compileDebugJava' "while build groovy in android studio

android - 懒惰的Android依赖项。 gradle依赖解析之前如何构建AARs库

json - 如何使用 Gson 反序列化继承的 Kotlin 数据类

java - java中Json预处理

jenkins - 如何知道 Jenkins 作业的运行时间

java - Java 8 Lambda 表达式的 Groovy 等价物

grails - 从字符串中仅删除一些字符