comment parsingr json en utilisant groovy

Je veux parsingr les données JSON qui entrent comme:

{ "212315952136472": { "id": "212315952136472", "name": "Ready", "picture": "http://soffr.miximages.com/json/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" } } 

Le code que j’utilise est:

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

Mais je ne peux rien atsortingbuer à Urls . Aucune suggestion?

Cette réponse est une carte, avec un seul élément avec la clé ‘212315952136472’. Il n’y a pas de clé ‘data’ dans la carte. Si vous voulez parcourir toutes les entrées, utilisez quelque chose comme ceci:

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

Si vous savez qu’il s’agit d’une carte à élément unique, vous pouvez accéder directement au link :

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

Et si vous connaissiez l’identifiant (par exemple si vous l’utilisiez pour faire la demande), vous pouvez accéder à la valeur de manière plus concise:

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

Avez-vous essayé d’utiliser JsonSlurper ?

Exemple d’utilisation:

 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" 

Vous pouvez mapper JSON à une classe spécifique dans Groovy en utilisant as opérateur:

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