我正在使用 Grails 2.1 将 JSON 呈现为我创建的 RestFul API 的一部分。基于 SqlServer 表的 Domain 类如下所示:
字符串名字
字符串姓氏
字符串官方地址1
字符串官方地址2
字符串首选地址1
字符串首选地址2
(ETC。)。 。 。
它返回与此类似的 JSON:
{
“名字”:“乔”,
"lastName": "山",
"officialAddress1": "1100 Wob Hill",
"officialAddress2": "公寓 # 3",
"preferredAddress1": "1100 摇摆巷。",
"preferredAddress2": "公寓 3。"
}
它工作正常,但客户希望我以这种方式嵌套结果:
{
“名字”:“乔”,
"lastName": "山",
首选地址{
"preferredAddress1": "1100 摇摆巷。",
"preferredAddress1": "公寓 3。"
},
官方地址{
"officialAddress1": "1100 Wob Hill",
"officialAddress2": "公寓 # 3"
}
}
我的问题是,由于域类和数据库的结构不是返回这种类型的嵌套结果,我如何在返回的 JSON 中轻松更改它?我是否必须放弃基于数据库/域对象反省 JSON 的方式并执行某种自定义转换器?
最佳答案
我是 stackoverflow 的新手,我希望我不会弄乱它,但我想我知道你需要什么。在 bootstrap.groovy 文件中,您可以找到“def init = { servletContext -> ”行 放在那里这样的东西:
JSON.registerObjectMarshaller(YourDomainName) {
def returnArray = [:]
returnArray['firstName'] = it.firstName
returnArray['lastName'] = it.lastName
returnArray['preferredAddress'] = [it.preferredAddress1 ,it.preferredAddress2]
returnArray['officialAddress'] = [it.officialAddress1 ,it.officialAddress2]
return returnArray
}
现在,当您像 Grails 一样使用 JSON 进行渲染时,它将在 bootstrap 中查找并 按照您的要求呈现域。
希望这有帮助
关于json - 在 Groovy/Grails 中生成的 JSON 中插入嵌套项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627841/