有誰知道在使用最新版本的Grails JSONBuilder多次發送同一對象時避免重複封閉的方法嗎?如何消除使用JSONBuilder時的剪切和粘貼封閉
我有一個Group
域對象,其中包含一組Members
和Leaders
。我想找到一種方法來釋放一個人而不必剪切和粘貼閉包。
def builder = new JSONBuilder()
def result = builder.build {
array {
Group.list().each { Group group ->
g = {
id = group.id
name = group.name
members = array {
group.members?.person?.sort().each { Person person ->
m = { // Person closure copy #1
id = person.id
firstName = person.firstName
lastName = person.lastName
}
}
}
leaders = array {
group.leaders?.person?.sort().each { Person person ->
l = { // Person closure copy #2
id = person.id
firstName = person.firstName
lastName = person.lastName
}
}
}
}
}
}
}
我試着單獨定義閉包但是導致錯誤,如:exception: No such property: id for class:
。
一些注意事項:
1)中的示例中的域對象被大大簡化。我使用的是JSONBuilder而不是render Group.list() as JSON
或render Group.list().encodeAsJSON
,因爲我需要控制我的對象的哪些部分被編碼。
2)我會接受權威的答案,解釋爲什麼不能這樣做。
你是如何「分別定義閉包?」的。 我相信def closure = {...}應該適用於你的情況... – jpertino 2011-02-10 14:04:07
這就是我所嘗試的。我曾希望它會起作用,但事實並非如此。 – lambmj 2011-02-10 15:01:43