58 votes

comment analyser json en utilisant groovy

Je veux analyser les données JSON qui arrivent comme:

 {
   "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"
   }
}
 

Le code que j'utilise est:

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

Mais je ne peux rien obtenir affecté à Urls . Aucune suggestion?

84voto

Dónal Points 61837

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"
 

63voto

Burt Beckwith Points 46122

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 que c'est une carte à un seul élément, vous pouvez accéder directement au link :

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

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X