当我尝试JSON.parse("foo")
时,出现错误:
Uncaught SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at <anonymous>:1:6
但是,当我使用JSON.parse('"foo"')
时,我可以得到预期的结果:
const value = JSON.parse('"foo"');
console.log(value)
那为什么会发生这种情况?
答案 0 :(得分:1)
您可以在json.org中找到使有效JSON有效的原因。 JSON可以代表null,布尔值,数字,字符串,数组和对象。对于字符串,必须将其用双引号引起来。
JSON本身是字符串格式,因此当您以JSON格式指定字符串时,您需要:
下面是JSON.parse
正确参数的一些示例:
JSON.parse("true")
JSON.parse("false")
JSON.parse("null")
JSON.parse("42")
JSON.parse("[13]")
JSON.parse('"hello"')
JSON.parse('{"name": "Mary"}')
但不是:
JSON.parse("yes")
JSON.parse("no")
JSON.parse("none")
JSON.parse('hello')
JSON.parse({"name": "Mary"})
由于该参数在不存在时将被强制转换为字符串,因此以下内容也可以工作,但会造成混乱(且无用):
JSON.parse(true)
JSON.parse(false)
JSON.parse(null)
JSON.parse(42)
答案 1 :(得分:0)
之所以会这样,是因为JSON.parse()
通过格式化使用syntaxis给出的字符串来返回值,从而用Java语言声明值。因此,赤裸使用foo
就像是投射未定义的变量。
还请注意,该符号使用双引号"
而不是单引号'
。这就是JSON.parse('"foo"')
有效但JSON.parse("'foo'")
无效的原因。