如何在Grails中将普通对象渲染为JSON,XML?

时间:2014-09-02 09:26:31

标签: json grails groovy

我有一个类似于以下内容的控制器(RestfulController)代码:

def doSomethingAwesome() {
    Domain domainObject = prepareDomainObject()
    //do something on the domain object
    Model model = new Model(name: domainObject.name, description: domainObject.description)
    respond model
}

可以看出,我试图回复包含在Model对象中的数据。但是,Model类不是域类;它只是一个简单的Groovy类。当我尝试单独测试这个代码时,我会通过它,但是当我用所有其他测试测试它时,我得到GroovyCastException说该对象不能转换为JSON。

我的搜索中提到的一些文章建议我将模型对象放在地图中,然后渲染该地图。类似的东西:

render ['model': model] as JSON

但是,这并不是我喜欢的回复信息。此外,XML消息看起来会非常不同。

1 个答案:

答案 0 :(得分:0)

https://github.com/jeffbrown/pogorespond上的Grails 2.4.3演示项目演示了如何将POGO(不是域类)传递给respond方法。 https://github.com/jeffbrown/pogorespond/blob/1646c64fe2b37856fc87b64ae1cf5a6c4fd44cb1/grails-app/controllers/demo/DemoController.groovy包含以下内容:

package demo

class DemoController {

    static responseFormats = ['json']

    def index() {
        def m = new Model(name: 'Some Name', description: 'Some Description')
        respond m
    }
}

class Model {
    String name
    String description
}