JSON en Groovy / Graal
J'essaye d'accéder à un site par l'intermédiaire de leur exportation JSON.
L'URL est: http://neotest.dabbledb.com/publish/neotest/f820728c-4451-41f6-b346-8cba54e52c6f/projects.jsonp
Je suis en utilisant HTTPBuilder d'essayer d'accomplir ce en Groovy, mais éprouve de la difficulté. J'ai utilisé le code d'exemple de http://groovy.codehaus.org/HTTP+Builder à venir avec ce:
//perform a GET request, expecting JSON response data
http.request( GET, JSON ) {
url.path = 'publish/neotest/f820728c-4451-41f6-b346-8cba54e52c6f/projects.jsonp'
//response handler for a success response code:
response.success = { resp, json ->
println resp.statusLine
//parse the JSON response object:
json.responseData.results.each {
println " ${it.titleNoFormatting} : ${it.visibleUrl}"
}
}
}
Cependant, lorsque je lance le test unitaire pour la méthode que j'ai tout simplement obtenir No such property: GET for class: ProjectController groovy.lang.MissingPropertyException: No such property: GET for class: ProjectController
qui je vais avoir du mal à comprendre.
Vous devez vous connecter pour publier un commentaire.
Il y a quelques problèmes avec votre exemple de code. Tout d'abord, pour accéder à OBTENIR et JSON de cette façon, vous avez besoin de manière statique les importer:
Qui va rendre le code compile, mais ne pas fonctionner correctement. Votre url.valeur du chemin besoins de file '/' (comme indiqué sur le HTTPBuilder page). Plus important encore, le JSON qui provient l'URL que vous faites référence à a un des structures complètement différentes de ce qui est retourné par l'exemple de code qui effectue une recherche sur Google. Si vous chargez votre URL dans le très pratique JSON Formateur de service à CuriousConcept, vous verrez la structure. Voici le code qui affiche certaines données JSON:
Par le façon, il ya une modification de rupture dans la version 0.5.0 de HTTPBuilder qui est pertinente pour le présent code. Comme la RC-1 annonce de publication des états,
Donc, si vous vous déplacez à 0.5.0 à un certain point, vous aurez besoin d'utiliser des uri.chemin d'accès au lieu de l'url.chemin
Si vous voulez juste pour aller chercher les données, vous pouvez le faire dans le Graal de cette façon:
(tout comme une simple alternative)
Je ne suis pas familier avec HTTPBuilder, mais en regardant la documentation, vous pourriez être en mesure d'obtenir par le remplacement de
avec
Vous pouvez également:
Je suis en se fondant hors de la documentation pour HttpBuilder.demande(), qui appelle à une Méthode et un Objet (qui peut être un ContentType).
nous pouvons analyser JSON texte avec le JsonSlurper classe. Nous n'avons qu'à nourrir le texte de la parseText() la méthode et nous pouvons les valeurs sont mappés à des Cartes et des Listes. Et obtenir le contenu est alors très facile
Bien que ne répondant pas à la question de départ, j'ai remarqué que vous avez demandé sur les autres bibliothèques. Ignorant Groovy que je n'ai pas utilisé pour cela, la meilleure et la plus simple de bibliothèque Java pour la construction d'un client de services web est en Jersey, à mon avis, les mains vers le bas.