我将尽力澄清我的意思。
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
如您所见,字符串“ ce”的解析在位置0失败,而字符串“ te”的解析在位置1失败。这意味着解析器认为存在一些以字符“ t”开头的合法JSON。有人知道那会是什么吗?还是为什么解析器在稍后的t字符失败?
答案 0 :(得分:10)
关键字true
以“ t”开头。因此,直到解析器看到“ e”,它才知道语法无效。
该错误之所以令人着迷,是因为它将“ e”报告为 token ,这不是我实现JSON解析器的方式。这似乎是Node / V8的事情,因为Firefox从位置1(“ t”)开始拒绝整个令牌。
您可以通过尝试JSON.parse("nulp")
仔细检查此答案; “ p”上的节点错误。
答案 1 :(得分:2)
完整的JSON语法如下:
JSON = null
or true or false
or JSONNumber
or JSONString
or JSONObject
or JSONArray
因此,编译器将处理t
,n
和f
作为JSON字符串的有效开始。
有关更多信息,请检查:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse