我的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传递给视图吗?
非常感谢你。
答案 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。