2010-06-11 9 views

risposta

47

Grails analizza automaticamente/unmarshals il JSON e puoi accedervi tramite request.JSON nel controller. L'oggetto restituito è di tipo JSONObject e consente quindi l'accesso in stile mappa alle proprietà. Puoi anche utilizzare direttamente questo JSONObject per l'associazione dati:

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

potresti spiegare cosa mi manca con lo stesso approccio (http://stackoverflow.com/questions/15067379/grails-initiating-domain-class-using-json) –

+0

Se non si dispone di una classe di dominio (iethe json solo i suoi dati di input), esiste un modo per analizzare jsonObject? Ovviamente si può fare def x = jsonOblect.xxx, ma come si fa a scorrere le collezioni nelle viscere del json? –

6

Scopri i migliori classi JSON in Grails:

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

Ad esempio, ecco come ho iterare su una lista di record JSON in un parametro chiamato 'update':

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

Grazie Mike! Ci sono altre variabili/modi per ottenere dati pubblicati diversi da params? Questo è quello che mi sta causando più dolore. – maximus

+1

Qual è il tuo problema specifico? Puoi pubblicare del codice? –

+0

Sai cosa, ho scoperto che non stavo inviando il json, ecco perché non è mai apparso in params. Quindi, la tua soluzione funziona bene. Grazie ancora! – maximus

Problemi correlati