如何使用groovyparsingjson

我想parsingJSON数据,如下所示:

{ "212315952136472": { "id": "212315952136472", "name": "Ready", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/195762_212315952136472_4343686_s.jpg", "link": "http://www.hityashit.com/movie/ready", "likes": 5, "category": "Movie", "description": "Check out the reviews of Ready on http://www.hityashit.com/movie/ready" } } 

我使用的代码是:

 JSONElement userJson = JSON.parse(jsonResponse) userJson.data.each { Urls = it.link } 

但是我无法获得分配给Urls任何内容。 有什么build议么?

那个回应是一个Map,有一个关键字'212315952136472'的元素。 地图中没有“数据”键。 如果你想遍历所有的条目,使用这样的东西:

 JSONObject userJson = JSON.parse(jsonResponse) userJson.each { id, data -> println data.link } 

如果您知道这是一个单元素地图,那么您可以直接访问该link

 def data = userJson.values().iterator().next() String link = data.link 

如果你知道id(例如,如果你使用它来提出请求),那么你可以更简洁地访问这个值:

 String id = '212315952136472' ... String link = userJson[id].link 

你有没有尝试过使用JsonSlurper ?

用法示例:

 def slurper = new JsonSlurper() def result = slurper.parseText('{"person":{"name":"Guillaume","age":33,"pets":["dog","cat"]}}') assert result.person.name == "Guillaume" assert result.person.age == 33 assert result.person.pets.size() == 2 assert result.person.pets[0] == "dog" assert result.person.pets[1] == "cat" 

您可以使用运算符将​​JSON映射到Groovy中的特定类:

 import groovy.json.JsonSlurper String json = ''' { "name": "John", "age": 20 } ''' def person = new JsonSlurper().parseText(json) as Person with(person) { assert name == 'John' assert age == 20 }