【问题标题】:Grails Controller: Render String as JSON ResponseGrails 控制器:将字符串呈现为 JSON 响应
【发布时间】:2013-12-24 16:50:38
【问题描述】:

我的 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 时,我会收到一个转换异常。

有什么方法可以将字符串直接传递给视图?

非常感谢您。

【问题讨论】:

    标签: json grails controller


    【解决方案1】:

    如果你已经有了 JSON 格式的响应,你可以直接渲染它。

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

    【讨论】:

      【解决方案2】:

      render 方法也接受文本作为参数:

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

      【讨论】:

      • 我们不应该使用“application/json”而不是“text/json”吗?
      • 是的,application/json 是官方标准,但由于历史原因,大多数工具也理解 text/json。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-16
        相关资源
        最近更新 更多