2012-12-14 4 views
2

C'est une sorte de question étrange pour une situation étrange. J'ai une grande structure JSON que je voudrais représenter dans l'exécution de code groovy. J'ai besoin d'objets groovy qui reflètent la même structure que les objets JSON. Comme on pouvait s'y attendre, une recherche sur le Web renvoie principalement des résultats avec des trucs de conversion groovy/json runtime, mais rien sur les choses qui génèrent du code groovy.Convertisseur de Json en code groovy?

Vous pourriez penser que c'est paresseux mais c'est vraiment une structure JSON massive! Un convertisseur permettrait d'économiser des jours! Essayez d'utiliser un analyseur JSON comme this one

+0

Vous pouvez utiliser une instance d'un objet groovy json comme un objet Groovy. Ou vous voulez que l'objet soit tapé? – Will

+0

pouvez-vous reformuler "Bien sûr, les requêtes de recherche ne se remplissent que d'un objet groovy normal lors de la conversion d'exécution."? J'ai du mal à analyser cette phrase. –

+0

@Will P Oui idéalement, je voudrais taper le code groovy – barrymac

Répondre

3

Vous pouvez utiliser propres Groovy JsonSlurper pour analyser des objets JSON:

import groovy.json.* 

def json = '{"name":"john", "surname":"doe", "languages": ["groovy", "python"]}' 

def obj = new JsonSlurper().parseText(json) 

assert obj.name == "john" 
assert obj.surname == "doe" 

assert obj.languages.containsAll("python", "groovy") 

Bien sûr, la classe est typées: il est seulement connu à l'exécution. Si vous voulez qu'il soit tapé, vous pouvez écrire un code qui écrit le code sur la base d'un exemple (car un json schema peut être rare).

EDIT: si vous voulez générer le code de classes de modèle, vous pouvez essayer JSONGen, qui « parse JSON pour créer des fichiers source côté client pour modéliser la structure de données JSON ». Je ne suis pas au courant d'une solution pour Groovy, mais puisque les intégrations de java-groovy sont sans couture, cela fonctionnera bien.

+0

Excellent qui ressemble à la solution, j'ai hâte de l'essayer! – barrymac

-2

Selon la documentation que vous avez juste besoin de faire

JSON.parse 

désérialiser les données

1

Si vous voulez une représentation Groovy de votre JSON, vous pouvez l'obtenir via le JsonSlurper intégré. Cela vous donnera des cartes Java et des listes de données avec lesquelles vous pouvez travailler.

Vous pouvez remplir des objets personnalisés plus spécifiques que vous avez écrits pour représenter vos entités JSON en utilisant le data binding functionality de Jackson (tiers) (voir également this question).