Grails Controller:将字符串渲染为JSON响应

时间:2013-12-07 07:54:30

标签: json grails controller

我的GSP上有一个简单的自动完成文本输入字段,它通过AJAX请求从控制器获取其值(国家列表)。如果控制器看起来像这样,一切正常:

def getAllCountries() {
  def countries = [[name: 'Afghanistan', code: 'AF'],[name: 'Åland Islands', code: 'AX'],[...
  render countries as JSON
}

但是,如果想要以json格式的方式传递已包含国家/地区的字符串中的国家/地区,那么我可以对Internationalisaion使用不同的字符串表示形式,如下所示:

def countries = "[{'name':'Afghanistan', code: 'AF'},{'name':'Åland Islands', code: 'AX'},{'name':'Albania', code: 'AL'},{..."

但是,现在当我将渲染国家称为JSON时,我收到了一个强制转换异常。

有什么办法可以直接将String传递给视图吗?

非常感谢你。

3 个答案:

答案 0 :(得分:11)

如果您已经有JSON格式的响应,则可以直接呈现它。

response.setContentType("application/json")
render '[{"name":"Afghanistan","code":"AF"},{"name":"Aland Islands","code":"AX"},{"name":"Albania","code":"AL"}]'

答案 1 :(得分:3)

render方法也接受text作为参数:

render contentType: "text/json", text: '[{"name":"Afghanistan" ...}]'

答案 2 :(得分:1)

渲染[[name: 'Afghanistan', code: 'AF']] as JSON将导致[{"name":"Afghanistan","code":"AF"}],尝试将已经json格式的String转换为JSON没有意义。
如果你有"[{'name':'Afghanistan', code: 'AF'}]",只需使用它而不转换为Json。