Grails - 使用 JSON 启动域类

Posted

技术标签:

【中文标题】Grails - 使用 JSON 启动域类【英文标题】:Grails - Initiating domain class using JSON 【发布时间】:2013-02-10 14:54:01 【问题描述】:

我有这个简单的域类:

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 地图仍然为空。 我错过了什么?

【问题讨论】:

这可能是一个 Grails 错误jira.grails.org/browse/… 【参考方案1】:

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

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

它很丑,但是数据绑定似乎无法处理嵌套的 json

【讨论】:

感谢回复……这很奇怪,我会固执的继续寻找解决方案【参考方案2】:

如果你想让它工作,你需要将你的结构转换成这个:

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

【讨论】:

感谢您的回复,但是 UI JSON 是给定的,无法更改。我确信有一个更流畅的解决方案:)【参考方案3】:

如果你在实例化设置之前加上这行,会递归绑定。

JSON.use('deep')

【讨论】:

以上是关于Grails - 使用 JSON 启动域类的主要内容,如果未能解决你的问题,请参考以下文章

在 Grails 中存储和编辑键/值对?

在域类中使用 grails 服务

在 Grails 中使用 JPA 域类

grails:将 SQL 转换为域类

Grails 中视图的 JSON 输出

grails域类中的时间字段