Javascript 为什么JSON解析在以“开始”的字符串的第一个字符上没有失败;t";?
我会尽快澄清我的意思Javascript 为什么JSON解析在以“开始”的字符串的第一个字符上没有失败;t";?,javascript,json,Javascript,Json,我会尽快澄清我的意思 JSON.parse("te") VM297:1 Uncaught SyntaxError: Unexpected token e in JSON at position 1 at JSON.parse (<anonymous>) at <anonymous>:1:6 JSON.parse("ce") VM342:1 Uncaught SyntaxError: Unexpected token c in JSON at positi
JSON.parse("te")
VM297:1 Uncaught SyntaxError: Unexpected token e in JSON at position 1
at JSON.parse (<anonymous>)
at <anonymous>:1:6
JSON.parse("ce")
VM342:1 Uncaught SyntaxError: Unexpected token c in JSON at position 0
at JSON.parse (<anonymous>)
at <anonymous>:1:6
JSON.parse(“te”)
VM297:1未捕获的语法错误:JSON中位置1处的意外标记e
在JSON.parse()处
时间:1:6
JSON.parse(“ce”)
VM342:1未捕获的语法错误:JSON中位于位置0的意外标记c
在JSON.parse()处
时间:1:6
如您所见,字符串“ce”在位置0处解析失败,字符串“te”在位置1处解析失败。这意味着解析器认为存在以字符“t”开头的合法JSON。有人知道那会是什么吗?或者为什么解析器在t后面的字符失败 关键字
true
以“t”开头。因此,直到解析器看到“e”,它才知道语法是无效的
这个错误有点令人着迷,因为它将“e”报告为令牌,这不是我实现JSON解析器的方式。这似乎是Node/V8的问题,因为Firefox拒绝从位置1(“t”)开始的整个令牌
您可以通过尝试
JSON.parse(“nulp”)
再次检查这个答案;“p”上的节点错误。完整的JSON语法如下:
JSON = null
or true or false
or JSONNumber
or JSONString
or JSONObject
or JSONArray
因此,编译器将处理t
、n
、f
作为JSON字符串的有效开始。
有关更多信息,请查看:那是什么环境?@Pointy V8specific@YuryTarabanko是的,所以看起来我认为他们认为这是一个词法标记。@没错,这可能只是错误消息的措辞方式。Firefox的行为不符合fwiw.@chaospandio,或者他们可能使用PEG解析器,这可能有点奇怪,但JSON非常简单,可能他们发现这会更快。