Once I post JSON data to a url in Grails, how can I get access to that data inside of the controller?
+2
A:
Check out the JSON classes in Grails:
http://grails.org/doc/latest/api/org/codehaus/groovy/grails/web/json/package-frame.html
For example, here's how I iterate over a list of JSON records in a parameter called '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)
}
Mike Sickler
2010-06-11 03:32:52
Thanks Mike! Are there any other variables/ways of getting posted data other than params? That's what's really causing me the most pain.
maximus
2010-06-11 04:21:26
What's your specific problem? Can you post some code?
Mike Sickler
2010-06-11 04:50:47
You know what, I found out that I wasn't posting the json, that's why it never appeared in params. So, your solution works out just fine. Thanks again!
maximus
2010-06-15 03:52:48
+3
A:
Grails automatically parses/unmarshals the JSON and you can access it via request.JSON
in your controller. The object returned is of type JSONObject
and thus allows map-style access to the properties. You can also directly use this JSONObject for data binding:
def jsonObject = request.JSON
def instance = new YourDomainClass(jsonObject)
Daniel Rinser
2010-06-14 00:16:59