2010-06-11 14 views

Respuesta

47

Griales automáticamente analiza/desasigna el JSON y puede acceder a él a través del request.JSON en su controlador. El objeto devuelto es del tipo JSONObject y, por lo tanto, permite el acceso estilo mapa a las propiedades. También puede usar directamente este JSONObject para el enlace de datos:

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

podría explicar lo que me estoy perdiendo con el mismo enfoque (http://stackoverflow.com/questions/15067379/grails-initiating-domain-class-using-json) –

+0

Si no tiene una clase de dominio (iethe json solo sus datos de entrada), ¿hay alguna forma de analizar jsonObject? Obviamente, uno puede hacer def x = jsonOblect.xxx, pero ¿cómo iterar sobre colecciones en las entrañas del json? –

6

Mira la clase JSON en Grails:

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

Por ejemplo, aquí está cómo iterar sobre una lista de registros de JSON en un parámetro llamado 'actualización':

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

Gracias Mike! ¿Hay otras variables/formas de obtener datos publicados que no sean params? Eso es lo que realmente me está causando más dolor. – maximus

+1

¿Cuál es su problema específico? ¿Puedes publicar algún código? –

+0

Sabes qué, descubrí que no estaba publicando el json, es por eso que nunca apareció en params. Entonces, tu solución funciona bien. ¡Gracias de nuevo! – maximus

Cuestiones relacionadas