2010-06-11 2 views

Répondre

47

Grails analyse/désmarque automatiquement le JSON et vous pouvez y accéder via request.JSON dans votre contrôleur. L'objet renvoyé est de type JSONObject et permet ainsi un accès de type map aux propriétés. Vous pouvez également utiliser directement ce JSONObject pour la liaison de données:

def jsonObject = request.JSON 
def instance = new YourDomainClass(jsonObject) 
+0

pourriez-vous expliquer ce que je Si vous ne disposez pas d'une classe de domaine je manque avec la même approche (http://stackoverflow.com/questions/15067379/grails-initiating-domain-class-using-json) –

+0

(iethe json ses données d'entrée seulement), est-il possible d'analyser le jsonObject? De toute évidence, on peut faire def x = jsonOblect.xxx, mais comment vous itérer sur les collections dans les entrailles de la JSON? –

6

Découvrez les classes JSON dans Grails:

http://grails.org/doc/latest/api/org/codehaus/groovy/grails/web/json/package-frame.html

Par exemple, voici comment j'itérer sur une liste d'enregistrements JSON dans un paramètre appelé 'mise à jour':

def updates = new org.codehaus.groovy.grails.web.json.JSONArray(params.updates) 
    for (item in updates) { 
        def p = new Product() 
     p.quantity = item.quantity 
     p.amount = item.amount 
     p = salesService.saveProductSales(p) 

    } 
+0

Merci Mike! Existe-t-il d'autres variables/moyens d'obtenir des données postées autres que des paramètres? C'est ce qui me cause le plus de douleur. – maximus

+1

Quel est votre problème spécifique? Pouvez-vous poster du code? –

+0

Vous savez quoi, j'ai découvert que je ne publiais pas le JSON, c'est pourquoi il n'est jamais apparu dans params. Donc, votre solution fonctionne très bien. Merci encore! – maximus

Questions connexes