Кто-нибудь знает способ избежать повторения замыкания при испускании одного и того же объекта более одного раза, используя последнюю версию Grails 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) Я приму авторитетные ответы, объясняющие, почему этого нельзя сделать.