Graal tableau JSON
Je suis la conversion d'une liste de Foo objets à une chaîne JSON. J'ai besoin de parser le JSON chaîne dans une liste de Foos. Cependant, dans l'exemple suivant, l'analyse me donne une liste de JSONObjects au lieu de Foos.
Exemple
List list = [new Foo("first"), new Foo("second")]
def jsonString = (list as JSON).toString()
List parsedList = JSON.parse(jsonString) as List
println parsedList[0].getClass() //org.codehaus.groovy.grails.web.json.JSONObject
Comment puis-je analyser dans Foos à la place?
Merci à l'avance.
OriginalL'auteur armandino | 2010-04-20
Vous devez vous connecter pour publier un commentaire.
J'ai eu un coup d'oeil à la docs de l'API JSON et il ne semble pas être un moyen d'analyser une chaîne JSON à un type spécifique de l'objet.
Vous n'aurez qu'à écrire le code vous-même à la conversion de chaque
JSONObject
à unFoo
. Quelque chose comme ceci devrait fonctionner:Plus générale, la solution serait d'ajouter une nouvelle statique
parse
méthode telle que laJSON
métaclasse, qui tente d'analyser la chaîne JSON à une Liste d'objets d'un type particulier:Vous pouvez essayer le code ci-dessus dans la console groovy. Quelques mises en garde
G - Non, je pense que
.properties
est uniquement accessible en écriture pour le Graal des objets du domaine. Régulièrement Groovy objets, je pense que.properties
est en lecture seule.Merci Don. L'approche générique est très agréable.
Juste point, N' - j'ai été faire des hypothèses là, je suppose!
Comment traitez-vous avec les dates et les valeurs null valeurs?
OriginalL'auteur Dónal
Si vous le faites dans un Graal contrôleur, et Foo EST en effet un objet de domaine, n'oubliez pas que l'armée avec votre JSON carte, vous pouvez également le faire:
OriginalL'auteur jondow
J'ai pris ce code et l'a étendue à travailler avec des structures imbriquées. Il s'appuie sur un attribut 'class' existant dans le JSON. Si il ya une meilleure façon, maintenant, dans Graal s'il vous plaît laissez-moi savoir.
OriginalL'auteur Sandman
Du Graal 2.5, c'est possible:
De sortie:
Je suis pas sûr de quand il est devenu une option.
OriginalL'auteur EpicVoyage