【问题标题】:Grails - Initiating domain class using JSONGrails - 使用 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 地图仍然为空。 我错过了什么?

【问题讨论】:

标签: json grails web request grails-domain-class


【解决方案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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多