web-dev-qa-db-fra.com

Tableau d'analyse des tableaux JSON dans Groovy

J'ai la chaîne suivante d'une réponse JSON REST:

[
   {
      "uid":10512213,
      "name":"Bob"
   },
   {
      "uid":7208201,
      "name":"John"
   },
   {
      "uid":10570,
      "name":"Jim"
   },
   {
      "uid":1799657,
      "name":"Sally"
   }
]

La définition de la réponse au repos provient de Facebook: FB REST Link

J'utilise Google App Engine + GAELYK qui s'exécute dans Jetty.

Quelle est la meilleure façon de convertir ce qui précède en tableau de cartes dans Groovy sur le serveur. (Cela devrait probablement récurrence de la réponse)

Je recherche quelque chose de facile qui n'inclut pas beaucoup de bibliothèques. (Je n'ai pas de maven)

17
Tihom

EDIT: Groovy depuis 1.8.0 a un JsonSlurper intégré:

import groovy.json.JsonSlurper

// Example Response Data
def restResponse = '[{"uid":10512213, "name":"Bob"},{"uid":7208201, "name":"John"},{"uid":10570, "name":"Jim"},{"uid":1799657, "name":"Sally"}]'

// Parse the response
def list = new JsonSlurper().parseText( restResponse )

// Print them out to make sure
list.each { println it }

Ancienne réponse ci-dessous:

Utilisez JsonSlurper ...

Un exemple de script pour lire cette réponse serait:

@Grab('net.sf.json-lib:json-lib:2.3:jdk15')
import net.sf.json.groovy.JsonSlurper

// Example Response Data
def restResponse = '[{"uid":10512213, "name":"Bob"},{"uid":7208201, "name":"John"},{"uid":10570, "name":"Jim"},{"uid":1799657, "name":"Sally"}]'

// Parse the response
def list = new JsonSlurper().parseText( restResponse )

// Print them out to make sure
list.each { println it }

Cela produit:

[uid:10512213, name:Bob]
[uid:7208201, name:John]
[uid:10570, name:Jim]
[uid:1799657, name:Sally]

Comme vous pouvez le voir, list est une liste de cartes, donc si vous vouliez simplement une liste des noms par exemple, vous pouvez simplement faire:

def names = list.name

Pour l'utiliser dans votre application Gaelyk, vous devez simplement télécharger json-lib-2.3-jdk15.jar à partir d'ici et faire quelque chose de similaire (sans le @Grab alors, car vous aurez le pot dans votre WEB-INF/lib dossier.

--Éditer--

En regardant autour, trouvé cette page montrant les dépendances pour json-lib

Le @Grab dans le script de test fait beaucoup de travail d'arrière-plan pour vous

38
tim_yates

Les tableaux JSON commencent par un caractère [ Et se terminent par un caractère ]. L'objet JSON commence par un { Et se termine par }.

Si vous allez sur JSON.org, vous pouvez télécharger JSONArray.Java. Utilisez-le pour créer un tableau JSON. Vous parcourez ensuite le tableau for (int i = 0; i < array.length(); i++) et récupérez chaque objet JSON en appelant array.getJSONObject(i); qui renvoie JSONObject. À partir de là, obtenez la valeur d'attribut respective, par ex. long uid = json.getLong("uid");

J'espère que cela t'aides.

6
Buhake Sindi