首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Groovy/Grails中生成的JSON中插入嵌套项

在Groovy/Grails中生成的JSON中插入嵌套项
EN

Stack Overflow用户
提问于 2012-03-09 09:45:02
回答 2查看 348关注 0票数 2

我使用Grails2.1将JSON呈现为我创建的RestFul应用程序接口的一部分。基于SqlServer表的域类如下所示:

String firstName

String lastName

String officialAddress1

String officalAddress2

String preferredAddress1

String preferredAddress2

等)。。。

它返回类似于下面的JSON:

{

"firstName":"Joe",

"lastName":“山”,

"officialAddress1":"1100 Wob Hill",

"officialAddress2":“3号公寓”,

"preferredAddress1":"1100摇摆车道。“,

"preferredAddress2":“3号公寓。”

}

它工作得很好,但客户希望我以这种方式嵌套结果:

{

"firstName":"Joe",

"lastName":“山”,

preferredAddress {

"preferredAddress1":"1100摇摆车道。“,

"preferredAddress1":“3号公寓。”

},

officialAddress {

"officialAddress1":"1100 Wob Hill",

"officialAddress2":“3号公寓”

}

}

我的问题是,既然域类和数据库的结构不能返回这种类型的嵌套结果,我如何才能在返回的JSON中轻松地更改它?我是否必须放弃仅仅基于数据库/域对象返回JSON的方式,而进行某种类型的自定义转换器?

EN

回答 2

Stack Overflow用户

发布于 2012-03-09 13:17:07

我刚接触堆栈溢出的事情,我希望我不会搞砸它,但我想我知道你需要什么。在您的bootstrap.groovy文件中,您会发现"def init ={ servletContext ->“行被放入其中,如下所示:

代码语言:javascript
复制
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
}

现在,当您像使用JSON一样使用render时,grails将在bootstrap中查找并按照您的要求渲染域。

希望这能有所帮助

票数 4
EN

Stack Overflow用户

发布于 2012-03-14 02:32:37

张贴的答案是正确的。我只想添加我所做的细微更改,以获得所需的确切结果:

谢谢!这就完成了。我最初认为它不会完全按照我需要的方式工作,但我错了。我稍微更改了语法以获得所需的结果。

代码语言:javascript
复制
        returnArray['preferredAddress'] = [address1: it.preferredAddress1?.trim(),
            address2: it.preferredAddress2?.trim(),
            address3: it.preferredAddress3?.trim(),
            city: it.preferredCity,
            state: it.preferredState,
            postCode: it.preferredPostCode,
            country: it.preferredCountry
            ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9627841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档