Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails-使用JSON启动域类_Json_Grails_Web_Request_Grails Domain Class - Fatal编程技术网

Grails-使用JSON启动域类

Grails-使用JSON启动域类,json,grails,web,request,grails-domain-class,Json,Grails,Web,Request,Grails Domain Class,我有一个简单的域类: class Settings { static constraints = { uid(nullable: false, unique: true) person() } String uid Map person } 以及使用json请求更新数据的web UI: {"uid":1234 , person:{"first_name" : "jhon" , "last_name" : "doe"}} 在控制器代码中: def json = request

我有一个简单的域类:

class Settings {
static constraints = {
    uid(nullable: false, unique: true)
    person()
}

String uid
Map person
}
以及使用json请求更新数据的web UI:

{"uid":1234 , person:{"first_name" : "jhon" , "last_name" : "doe"}}
在控制器代码中:

def json = request.JSON;
def s = new Settings(json);
似乎正在设置s.uid,但是s.person映射仍为空。
我缺少什么?

如果你想让它发挥作用,你需要将你的结构转换为:

{"uid":1234 , "person.first_name": "jhon" , "person.last_name": "doe"}

您可以在控制器中执行以下操作:

def json = request.JSON;
def s = new Settings(json);
s.person = json.person;

这很难看,但是数据绑定似乎无法处理嵌套的json。如果在实例化设置之前添加这一行,它将递归绑定

JSON.use('deep')

感谢回复,但是UI JSON是给定的,无法更改。我相信有一个更平滑的解决方案:)谢谢你的回复。。。这很奇怪,我会固执地继续寻找解决方案这可能是Grails的错误