【问题标题】:Getting an error with this JSON response收到此 JSON 响应的错误
【发布时间】:2013-08-09 09:30:56
【问题描述】:

我不断收到错误:Uncaught SyntaxError: Unexpected token '

这是完整的 JSON 响应:

'app': {type: 'app', desc: 'Application'}, 'iso': {type: 'iso', desc: 'ISO Disk Image'}, 'fla': {type: 'fla', desc: 'Adobe Flash Document'}, 'dll': {type: 'dll', desc: 'Dynamic Link Library'}

我也尝试将括号括在完整的响应中,但这并不能解决问题。我做错JSON了吗?我试过删除括号,但它抱怨字符。我正在尝试将此响应转换为 JavaScript 对象,但它就是不想这样做!

【问题讨论】:

    标签: javascript json object-literal


    【解决方案1】:

    有几个问题:

    1. JSON 中,键必须用 引号括起来(字符串也必须如此)。不允许使用单引号,并且需要引号

    2. 在 JSON 中,顶层必须始终是对象或数组。您已经引用了一系列属性初始化器,它们必须是inside一个对象。

    这是它的有效版本:

    {
      "app": {"type": "app", "desc": "Application"},
      "iso": {"type": "iso", "desc": "ISO Disk Image"},
      "fla": {"type": "fla", "desc": "Adobe Flash Document"},
      "dll": {"type": "dll", "desc": "Dynamic Link Library"}
    }
    

    变化:

    • 将所有单引号改为双引号。
    • 在没有它们的键(typedesc)周围加上双引号。
    • 将整个内容放在{} 中,这样顶层就是一个对象。

    【讨论】:

    • 呃...非常感谢!我已经用头敲击键盘将近一个小时了,希望我的头打字可以让它更好地工作!
    • @CharlesJohnThompsonIII: :-) 不用担心,很高兴有帮助。
    【解决方案2】:

    这是您的有效 JSON 字符串

    {
        "app": {
            "type": "app",
            "desc": "Application"
        },
        "iso": {
            "type": "iso",
            "desc": "ISODiskImage"
        },
        "fla": {
            "type": "fla",
            "desc": "AdobeFlashDocument"
        },
        "dll": {
            "type": "dll",
            "desc": "DynamicLinkLibrary"
        }
    }
    

    您可以随时在http://jsonlint.com/ 上检查有效性

    如果您想查找一些有效的 JSON 格式,请查看 here

    【讨论】:

      【解决方案3】:

      我只是在各处添加双引号,加上{},它就可以了:

      var objet = '{"app": {"type": "app", "desc": "Application"},"iso": {"type": "iso", "desc": "ISO Disk Image"},"fla": {"type":"fla", "desc": "Adobe Flash Document"},"dll": {"type": "dll", "desc": "Dynamic Link Library"}}';
      console.log($.parseJSON(objet));
      

      你可以找回我的测试here

      【讨论】:

        【解决方案4】:

        请参阅 json.org 了解完整的 JSON 标准。

        你会发现这里有两个问题:

        JSON 数据表示为一个对象 ({}) 或一个数组 ([])。因此,您需要根据适合您的数据的内容(可能是对象,从数据的外观),将所有内容封装在其中一个或另一个中。

        您还需要在字符串上使用双引号。来自json.org

        string 是由零个或多个 Unicode 字符组成的序列,包裹在 双引号,使用反斜杠转义

        最后,您可以使用JSON Lint 快速轻松地发现这类问题。

        这是您的有效 JSON 数据:

        {
            "app": {
                "type": "app",
                "desc": "Application"
            },
            "iso": {
                "type": "iso",
                "desc": "ISODiskImage"
            },
            "fla": {
                "type": "fla",
                "desc": "AdobeFlashDocument"
            },
            "dll": {
                "type": "dll",
                "desc": "DynamicLinkLibrary"
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2012-07-01
          • 1970-01-01
          • 2017-04-10
          • 2013-03-04
          • 2017-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-19
          相关资源
          最近更新 更多