渲染构建器json无法正确呈现

时间:2011-12-05 16:37:47

标签: json grails

我有以下内容:

render(builder: "json") {
   template(message:'hello', dateCreated:'someDate') {
      resources {
          resource(id: "123")
          resource(id: "456")
      }
   }
}

我在Firebug中获得以下内容:

{"template":{"message":"hello","dateCreated":"someDate"}}

我无法弄清楚为什么我没有得到资源集合。

2 个答案:

答案 0 :(得分:1)

我通常只是创建一个具有我想要的结构的地图,然后将其渲染为JSON。

import grails.converters.JSON
def data = [template: [message: 'hello', dateCreated: 'someDate', resources: [[id: "123"], [id:"456"]]]]
render data as JSON

不确定这是否是您正在寻找的确切结构,但它为您提供

{"template":{"message":"hello","dateCreated":"someDate","resources":[{"id":"123"},{"id":"456"}]}}

你可以在这里看到一个例子:

http://manbuildswebsite.com/2010/01/29/rendering-json-using-grails-part-1-collections-testing-and-the-jsonbuilder/

答案 1 :(得分:1)

我怀疑resource(id: "123")正在被解析为对g.resource taglib的调用。您可以尝试以下方法(或将资源重命名为其他内容):

render(builder: "json") {
   template(message:'hello', dateCreated:'someDate') {
      resources {
          'resource'(id: "123")
          'resource'(id: "456")
      }
   }
}