【问题标题】:Unexpected token I in JSON at position 2 [duplicate]JSON 中第 2 位的意外令牌 I [重复]
【发布时间】:2020-09-15 17:15:10
【问题描述】:

这是我的代码:

<script>
try {
    var ob = JSON.parse("{ ID: 1, 'Code':'001', 'Name':'john', 'HasParent':false, 'HasGrandParent':false, 'IsAgent':False }");
    document.write(ob.Name);
}
catch(err) {
    document.write(err);
}
</script>

这是错误信息:

Unexpected token I in JSON at position 2

我不知道发生了什么。这里有什么问题?

===================

感谢下面 JayTheKay 的回答。

问题和解决方法是:

  1. 对字符串使用双引号
  2. 布尔值是小写的,所以“False”是错误的,“false”是正确的
  3. 第一个键名ID 没有用双引号括起来

【问题讨论】:

  • JSON 不支持单引号作为键。
  • 还有False应该是false
  • @TiiJ7 yupe,我刚刚发现了这个...... :) 感谢您的提示

标签: javascript json


【解决方案1】:

JSON 属性不能用单引号括起来,你必须使用双引号。看看这个类似的问题:https://stackoverflow.com/a/36038497/891279

您的第一个属性根本没有用引号引起来。这可能会导致错误。

【讨论】:

  • 当您发现类似问题时,请将其标记为重复问题,而不是发布带有问题链接的答案。在问题下,标记 -> 复制 -> 将 URL 粘贴到框中。
  • @adiga 实际上,我最初完全不知道这与单引号或双引号有关。所以,当我在谷歌搜索结果时,由于我没有在谷歌搜索或stackoverflow搜索中搜索“单引号”,我只搜索错误消息,因此出现了不相关的搜索结果:)但是,感谢你们花时间帮助我:)
  • @adiga 在这里查看教程:w3schools.com/jsref/jsref_obj_json.asp 它以双引号显示了示例,但没有提到它必须使用双引号,我认为它的工作原理与 HTML 标签处理双引号相同引号和单引号。由于javascript也接受双引号和单引号作为字符串,这就是我最初感到困惑的原因:)
  • @mjb 你的问题是有效的。我的评论是针对 JayTheKay,如果他们发现重复项,如何从下次开始进行标记。
  • @mjb 也请参考MDN 而不是 w3schools。 w3schools 上的一些内容已经过时且错误 (Why not w3schools.com?)
猜你喜欢
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2016-12-13
  • 2017-05-11
  • 2022-01-16
相关资源
最近更新 更多