我是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
我如何做到这一点对此有任何建议会有所帮助。提前谢谢。
答案 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]}