无法在groovy中拆分jsonobject中的值

时间:2017-12-27 11:56:22

标签: json groovy split hashmap

我是groovy的新人。我试图在groovy中分割json对象中的值,但我似乎无法找到解决方案。请在下面找到示例代码

def inputFile = new File("C:\\graph.json")

                def InputJSON = new JsonSlurper().parseFile(inputFile,'UTF-8')
                InputJSON.each{println it}
                def names = InputJSON.graph;
                def name
                for (int kk=0;kk<4;kk++)
                {
                name=names.JArray1[kk]

                run.put(name.runid, name.rundetails);
                println "test::"+name.runid+"--------------"+name.rundetails
                }

graph.json

    {
"graph": {
    "JArray1": [
        {
            "runid": 1,
            "rundetails":{


"01_Home":0.231,
"02_Login":0.561}
}
]
}
}

name.rundetails 包含以下值

[01_Home:0.231, 02_Login:0.561]

我想拆分并将其添加为Hashmap中的键和值,如下面的格式

Key:01_Home   Value:0.231
Key:02_Login   Value:0.561

我如何做到这一点对此有任何建议会有所帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

import groovy.json.*

def inputFile = new StringReader('''
{
    "graph": {
        "JArray1": [{
                "runid": 1,
                "rundetails": {

                    "01_Home": 0.231,
                    "02_Login": 0.561
                }
            }
        ]
    }
}
''')

def json = new JsonSlurper().parse(inputFile)
json.graph.JArray1.each{run->
    println "runid   = ${run.runid}"
    // at this point `run.rundetails` is a map like you want
    println "details = ${run.rundetails}"    
}

答案 1 :(得分:0)

根据我的理解,你需要收集像:

[[Key:01_Home, Value:0.231], [Key:02_Login, Value:0.561]]

然后你可以这样做:

println InputJSON.graph
                 .JArray1
                 .rundetails
                 .collectEntries{it}
                 .collect{[Key: it.key, Value: it.value]}