使用profile = rest-api构建grails app。一切正常,但关联只显示为使用JSON作为responseFormat的ID列表。我试过了:
static mapping = {
children fetch: 'join'
children lazy: false
}
fetchMode = [children: 'eager']
在控制器中,我会像这样呈现JSON响应:
respond Parent.list()
还启用了旧版JSON转换器并设置:
grails.converters.json.default.deep = true
那么我怎样才能让孩子们成为响应的JSON对象呢?我需要应用程序的全局解决方案。
答案 0 :(得分:3)
不是默认情况下急切关注,最好使用连接查询:
respond Parent.list(fetch:[children:'join'])
答案 1 :(得分:0)
我正在运行Grails 2.4,但我们使用的解决方案是Grails Marshallers plugin。
我找不到任何关于支持Grails 3的文档,但它只是现有Grail方法(JSON.registerObjectMarshaller()
)的包装器,所以实质上它应该可以工作。
class Parent {
...
static marshalling = {
json {
deep 'children'
}
}
}
<小时/> 如果您不喜欢为此特定实例安装插件,那么您可以随时使用BootStrap.groovy注册您的课程:
JSON.registerObjectMarshaller(Parent) { p ->
return [
p.id
...
children: p.children.collect{ c ->
[
id: c.id,
...
]
}
]
}