【问题标题】:JSON.parse fails to create an object from a stringJSON.parse 无法从字符串创建对象
【发布时间】:2017-01-15 04:22:46
【问题描述】:

我正在使用 ruby​​ on rails 创建一个 cookie,该 cookie 将包含请求参数的数组作为字符串返回给视图。但是,当我 JSON.parse 该字符串时出现以下错误:

JSON.parse('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D')

Uncaught SyntaxError: Unexpected token % in JSON at position 0

我该如何解决这个问题?

【问题讨论】:

    标签: javascript ruby-on-rails json ruby


    【解决方案1】:

    字符串不是有效的 json。

    它是 uri 编码的,所以使用decodeURIComponent()对其进行解码

    JSON.parse(decodeURIComponent('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'))
    

    【讨论】:

      【解决方案2】:

      说有效载荷是 URI 编码的其他答案是正确的,但 decodeURIComponent 只是一个 javascript 方法。要在 ruby​​ 端解码它,请使用 URI.unescape

      JSON.parse(URI.unescape('%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'))
      

      你说你正在使用 rails,所以 URI 对象应该已经可用,但如果你没有使用 rails,你需要先require 'uri'

      【讨论】:

      • Uncaught SyntaxError: 可能是 javascript 错误。
      【解决方案3】:

      你需要先使用decodeURIComponent来解码字符串。

      JSON.parse(decodeURIComponent(
        '%7B%22specialty%22%3A%5B%22Anesthesiology%22%5D%7D'
      ));
      

      由于字符串被编码。解码后,您将获得键值对,即字符串形式的对象。现在您可以使用JSON.parse 来形成Javascript 对象。

      【讨论】:

        猜你喜欢
        • 2014-05-09
        • 1970-01-01
        • 1970-01-01
        • 2015-09-08
        • 1970-01-01
        • 2015-08-19
        • 1970-01-01
        • 2021-09-14
        相关资源
        最近更新 更多