Я отправляю себе JSON так же с jQuery:
$.ajax
({
type: "POST",
url: 'http://localhost:8080/myproject/myController/myAction',
dataType: 'json',
async: false,
//json object to sent to the authentication url
data: {"stuff":"yes",
"listThing":[1,2,3],
"listObjects":[{"one":"thing"},{"two":"thing2"}]},
success: function () {
alert("Thanks!");
}
})
Я отправляю это на контроллер и делаю
println params
И я знаю, что у меня уже проблемы ...
[stuff:yes, listObjects[1][two]:thing2, listObjects[0][one]:thing, listThing[]:[1, 2, 3], action:myAction, controller:myController]
Я не могу понять, как получить большинство из этих значений ...
Я могу получить "да" с params.stuff, но я не могу сделать params.listThing.each {} или params.listObjects.each {}
Что я делаю не так?
ОБНОВЛЕНИЕ:
Я заставляю контроллер делать это, чтобы попробовать два предложения:
println params
println params.stuff
println params.list('listObjects')
println params.listThing
def thisWontWork = JSON.parse(params.listThing)
render("omg l2json")
посмотрите, как странно выглядят параметры в конце исключения нулевого указателя, когда я пытаюсь ответить:
[stuff:yes, listObjects[1][two]:thing2, listObjects[0][one]:thing, listThing[]:[1, 2, 3], action:l2json, controller:rateAPI]
yes
[]
null
| Error 2012-03-25 22:16:13,950 ["http-bio-8080"-exec-7] ERROR errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [POST] /myproject/myController/myAction - parameters:
stuff: yes
listObjects[1][two]: thing2
listObjects[0][one]: thing
listThing[]: 1
listThing[]: 2
listThing[]: 3
ОБНОВЛЕНИЕ 2 Я изучаю вещи, но это не может быть правильным:
println params['listThing[]']
println params['listObjects[0][one]']
печать
[1, 2, 3]
thing
Похоже, это какая-то часть Grails нового JSON-маршалинга. Это несколько неудобно для моих целей хакерства с ценностями. Как мне вернуть все эти отдельные параметры обратно в большой интересный объект вложенных карт и списков?
Может быть, я не делаю то, что я хочу с jQuery?
ОБНОВЛЕНИЕ jQuery была проблема: Grails: откуда берется request.JSON, и как я могу поместить туда с помощью .ajax () или .post () jQuery?