我使用的是Grails 2.4.2。从这里可以看出:
https://grails.org/Converters+Reference
您可以使用自定义编组器在域中创建静态方法,以在控制器中呈现JSON。像那样:
域:
// a class to output in JSON
package com.sample
class User {
String login
String passwd
// JSON definition of the User object
static {
grails.converters.JSON.registerObjectMarshaller(User) {
return [
login: it.login
]
}
}
然后在你的控制器中:
def user = new User(login:'bob', passwd:'1234')
render user as JSON
在我的项目中,这对我不起作用。我将它渲染并输出为默认渲染(使用类:" com.sample.User" ...)。 但是,如果我在域和环境中改变某些内容并且重新加载"它(重新编译),然后渲染是好的。
当然,我希望自定义编组器代码在域中,如果可能没有其他代码(BootStrap.groovy,resources.groovy ......)等,我知道如何以另一种方式进行自定义编组(如此处:http://compiledammit.com/2012/08/16/custom-json-marshalling-in-grails-done-right/)
所以...我错过了什么?有可能吗?