有没有办法为Grails JSON响应添加额外的字段?

Rom*_*man 4 grails groovy json

我希望每个JSON响应都可以包含一个字段success.在那里添加此字段的最佳方法是什么?

我使用这样的代码来生成JSON响应:

try {
    def entity = myService.saveEntity(arg1,arg2)
    render entity as JSON //I want to add artificial field 'success = "yes"' here
} catch (ValidationException e) {
    render parseErrors(e.errors) as JSON //field 'success = "no"' here
}
Run Code Online (Sandbox Code Playgroud)

小智 8

本周我只是在努力解决这个问题.我想将一个域类作为JSON发回,但同时添加一个可能包含其他信息的'errorMessage'属性.

事实证明,当在grails中使用JSON时,它会发送回转换器对象,但可以使用JSON.parse()将该转换器实例转换为jsonObject ,我们可以轻松地向其中添加新值.

def jsonObject = JSON.parse((entity AS JSON).toString())
jsonObject.put("success", "yes")
render jsonObject as JSON
Run Code Online (Sandbox Code Playgroud)

我认为有几种不同的方法,但这对我来说最简单,因为我已经为我的大多数域类都有自定义转换器,我不想在我的域对象中添加任何其他瞬态属性.


tim*_*tes 5

您是否可以返回包含success字段和包含在单独变量中的对象的地图:

try {
    def entity = myService.saveEntity(arg1,arg2)
    render [ success:'yes', val:entity ] as JSON
} catch (ValidationException e) {
    render [ success:'no', val:parseErrors(e.errors) ] as JSON
}
Run Code Online (Sandbox Code Playgroud)

没测试过介意...