2013-02-25 66 views
3

我有這個簡單的域類域類:的Grails - 啓動使用JSON

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地圖保持空白。 我錯過了什麼?

+0

這可能是一個錯誤的Grails http://jira.grails.org/browse/GRAILS-9220?page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel – 2013-02-26 09:18:15

回答

1

如果你希望這樣的工作,你需要你的結構轉換成這樣:

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

感謝但回覆的UI JSON是給定的,不能改變。我確定有一個更順利的解決方案:) – 2013-02-25 13:29:57

2

你可以做這樣的事情在你的控制器如下:

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

它的醜陋,但數據綁定似乎不處理嵌套json

+0

感謝您的回覆...這很奇怪,我會\t 固執並繼續搜索解決方案 – 2013-02-26 06:48:07

0

如果您在實例化設置之前添加此行,它將遞歸綁定。

JSON.use('deep')