6
votes

JSON à Groovy / Grails

J'essaie d'accéder à un site via leur exportation JSON.

L'URL est la suivante: http://neotest.dabbledb.com/publish/neotest/f820728C-4451-41f6-b346-8cba54e52c6f/projects.jsonp

J'utilise httpbuilder pour essayer d'accomplir cela à Groovy, mais j'ai des problèmes. J'ai utilisé le code exemple de http://groovy.codehaus.org/http+builder à Venez avec ceci: xxx

Toutefois, lorsque j'exécute le test de l'unité pour la méthode, je reçois simplement pas de ce type de propriété: obtenir pour la classe: ProjectController groovy.lang. MissingPropertyException: pas de propriété de ce type: obtenir la classe: ProjectController dont j'ai du mal à comprendre.


0 commentaires

5 Réponses :


0
votes

Je ne connais pas le httpbuilder, mais je regarde la documentation, vous pourrez peut-être obtenir en remplaçant xxx pré>

avec p> xxx pré>

Vous devrez peut-être aussi: P>

import groovyx.net.http.Method
import groovyx.net.http.ContentType


2 commentaires

Je ne suis pas marié à httpbuilder par aucun étirement, c'était ce que quelques-unes des principales entrées Google suggérées pour les appels JSON à partir de GRAVES. S'il y a une autre solution que vous recommanderiez, je suis tout ce que je ne fais pas beaucoup de progrès ici.


Beaucoup de gens recommandent à HTTPCLIPT d'Apache, que le constructeur HTTP semble être basé sur, donc c'est probablement la meilleure option. J'essayais juste d'aider à résoudre ce qui semblait être une erreur de compilation dans votre script Groovy. Si le constructeur HTTP ne fonctionne pas, vous pouvez simplement écrire un Java droit dans votre groovy qui utilise httpClient ou même Java.net. *, Bien que ce soit un peu plus de code.



14
votes

Il y a quelques problèmes avec votre code exemple. Tout d'abord, pour accéder à GET et JSON de cette façon, vous devez les importer statiquement:

println json.name
println json.id
json.fields.each {
  println it
}


0 commentaires

-3
votes

Bien que ne répondez pas à la question initiale, j'ai remarqué que vous avez invité à propos d'autres bibliothèques possibles. En ignorant Groovy que je n'ai pas utilisé pour cela, la meilleure et la plus simple bibliothèque de Java pour la construction d'un client de services Web est Jersey à mon avis, la main vers le bas.


0 commentaires

11
votes

Si vous voulez simplement aller chercher les données, vous pouvez le faire dans GRAVES de cette façon:

import grails.converters.*;

def url = new URL("http://neotest.dabbledb.com/publish/neotest/f820728c-4451-41f6-b346-8cba54e52c6f/projects.jsonp")
def response = JSON.parse(url.newReader()) // response is an instance of JSONObject (see Grails API docs)

println response.toString(3) // Pretty-printed output
response.each { key, value ->
    println "$key = $value"
}


1 commentaires

Prudent ici! Cet exemple va fuir le lecteur (et à son tour java.net.httpurlconnection et avec cela, la prise!), Et il n'utilisera pas le codage de caractères spécifié par le serveur distant (mais il utilisera le codage par défaut de votre plate-forme). En d'autres termes: URL.Newreader est mauvais dans le cas général



0
votes

Nous pouvons analyser le texte JSON avec la classe JSONSLURPER. Nous n'avons que de nourrir le texte à la méthode Persetext () et nous pouvons que les valeurs soient mappées sur des cartes et des listes. Et obtenir le contenu est alors très facile xxx


0 commentaires