Grails 在控制器操作中呈现JSON

Grails 在控制器操作中呈现JSON,grails,controller,json-view,Grails,Controller,Json View,我有一个Grails3.3.8应用程序 compile 'org.grails.plugins:views-json' compile 'org.grails.plugins:views-json-templates' 以及views/partner/_companion.gson下的json视图: import io.my.domain.Companion model { Companion companion } json { id companion.id name

我有一个Grails3.3.8应用程序

  compile 'org.grails.plugins:views-json'
  compile 'org.grails.plugins:views-json-templates'
以及
views/partner/_companion.gson
下的json视图:

import io.my.domain.Companion

model {
  Companion companion
}
json {
  id companion.id
  name companion.name
  description companion.description
}
现在,我想在控制器操作中将对象呈现为json:

class PartnerController {
  def action() {
    Companion o = Companion.get(...)
    log.info render( view:"/partner/_companion", model:[ companion:o ] )
    log.info render( view:"_companion", model:[ companion:o ] )
    log.info render( template:"companion", model:[ companion:o ] )
    log.info render( template:"companion", model:o )
  }
}
所有这些calla输出
null
s


渲染的最佳方式是什么?

您正在调用的是
render
方法。它有一个
void
返回类型,这就是您的输出显示
null
的原因。该方法不返回值。它将模板呈现给响应。
g.render()
如果没有TagLib插件也无法工作,是吗?没错。即使使用
g.render()
在代码示例中显示的几种方法也不起作用<代码>视图:“/partner/\u companion”,
视图:“\u companion”
model:o
均无效。@JeffScottBrown我认为它们可以工作,因为我使用web配置文件从工作控制器复制了它们。不管怎么说,您是否有类似于
json-view
plugin但能够在Grails之外工作的库?“不管怎么说,您是否有类似于json-view-plugin但能够在Grails之外工作的库?”-这取决于您的想法。它会是一个JVM应用程序吗?您正在调用位于的
render
方法。它有一个
void
返回类型,这就是您的输出显示
null
的原因。该方法不返回值。它将模板呈现给响应。
g.render()
如果没有TagLib插件也无法工作,是吗?没错。即使使用
g.render()
在代码示例中显示的几种方法也不起作用<代码>视图:“/partner/\u companion”,
视图:“\u companion”
model:o
均无效。@JeffScottBrown我认为它们可以工作,因为我使用web配置文件从工作控制器复制了它们。不管怎么说,您是否有类似于
json-view
plugin但能够在Grails之外工作的库?“不管怎么说,您是否有类似于json-view-plugin但能够在Grails之外工作的库?”-这取决于您的想法。它会是一个JVM应用程序吗?