0

我不断收到错误消息: 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 对象,但它只是不想这样做!

4

4 回答 4

6

那里有几个问题:

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

  2. 在 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"}
}

变化:

  • 将所有单引号更改为双引号。
  • 在没有它们的键 ( type, )周围加上双引号。desc
  • 把整个东西放进去,{}这样顶层就是一个对象。
于 2013-08-09T09:33:59.000 回答
1

这是您的有效 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 格式,请查看此处

于 2013-08-09T09:34:51.547 回答
0

我只是在各处添加双引号,放在{}周围,它可以工作:

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));

你可以在这里检索我的测试

于 2013-08-09T09:41:04.413 回答
0

有关完整的 JSON 标准,请参阅json.org

你会看到这里有两个问题:

JSON 数据表示为对象 ( {}) 或数组 ( [])。因此,您需要将所有内容包装在一个或另一个中,具体取决于适合您的数据的内容(可能是对象,从数据的外观来看)。

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

字符串是零个或多个 Unicode 字符的序列,用双引号括起来,使用反斜杠转义

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

这是您在有效 JSON 中的数据:

{
    "app": {
        "type": "app",
        "desc": "Application"
    },
    "iso": {
        "type": "iso",
        "desc": "ISODiskImage"
    },
    "fla": {
        "type": "fla",
        "desc": "AdobeFlashDocument"
    },
    "dll": {
        "type": "dll",
        "desc": "DynamicLinkLibrary"
    }
}
于 2013-08-09T09:41:14.580 回答