我想在我的JSON输出中为我的一个类(Account)添加瞬态属性。我这样做的最好方法是在Bootstrap.groovy中使用JSON.grailsObjectMarshaller()为我的类创建一个自定义的JSON结构,但是我似乎无法让它工作。这是我的Bootstrap.groovy代码:
import grails.converters.deep.JSON
import stocks.Account
class BootStrap {
def init = { servletContext ->
JSON.registerObjectMarshaller(Account, {
println("test")
def returnArray = [:]
returnArray['email'] = it.email
returnArray['test'] = "success"
return returnArray
})
}
def destroy = {
}
}
这是我的AccountController.groovy代码:
def jsonTest = {
def account = Account.findById('1')
render account as JSON
}
这是我的输出,就好像我根本没有调用JSON.registerObjectMarshaller()一样:
{"class":"stocks.Account","id":1,"email":"ian...","firstName":"Ian"}
我尝试过的东西,但似乎没有帮助:
答案 0 :(得分:1)
您使用的是哪个版本的grails?
在Bootstrap.groovy
中有以下内容对我有用import grails.converters.JSON
...
JSON.registerObjectMarshaller(Bank) {
def returnArray = [:]
returnArray["name"] = it.name
return returnArray
}
以下域类
class Bank implements Serializable {
String name
}
Controller中的以下代码
import grails.converters.JSON
...
def jsonTest = {
def account = Bank.findById('1')
render account as JSON
}
获得以下JSON:
{"name":"Niko Securities"}
注意:我在Bootstrap和控制器中只使用常规JSON转换器,因此可能会检查两个位置是否使用相同的转换器。