2017-12-27 265 views
1

我是groovy新手。我试图在groovy中分割json对象中的值,但我似乎找不到解决方案。请在下面找到无法分裂在groovy jsonobject中的值

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

据我了解,你需要收集,如:

[[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]} 
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}"  
}