【发布时间】:2015-04-24 03:25:02
【问题描述】:
如何在 grails 控制器中发送数据(JSON 或 XML)并对其进行反序列化?
我试过render params 和render request.JSON 给我返回了空的json,还有命令方法
import grails.converters.JSON
class TestController {
def test(RestCommand r){
render r as JSON
}
}
class RestCommand {
String data
static constraints = {
data nullable: false
}
}
女巫导致
{"data":null,"errors":{"errors":[{"object":"x.x.RestCommand","field":"data","rejected-value":null,"message":"Property [data] of class [class x.x.RestCommand] cannot be null"}]}}
这是我的 curl 请求:
curl -X POST --header "Content-Type:application/json" --data '{"id":1}' localhost:8080/myApp/myController/myMethod
附:我在 stackexchange 中查看过类似的问题,但正如我上面所讨论的,这些方法都不起作用。
【问题讨论】:
-
您的命令对象包含一个名为
data的字符串,并且您正在发送一个id作为数字。如果您render r as JSON并发送正确的数据({"data":"somestring"}),上面的示例可以正常工作 -
对于没有
RestCommand的def myMethod(),render request.JSON也可以正常工作。你能显示更多你的控制器的代码吗? -
@PawełPiecyk 给你,检查我的编辑。问题可能与 grails 配置有关吗?
-
@cfrick 如果你也检查我的更新,那就太好了。
-
错误信息不是很有意义吗?你说你想要一个字符串
data,它不允许有null值。然后您发布缺少data的 json 并得到一个错误告诉您。
标签: java xml json grails model-view-controller