带有\ u0000的Javascript JSON.parse

时间:2018-02-07 16:08:32

标签: javascript json

使用JSON.parse:

这有效:

JSON.parse('{\"V\":\"\u008c\"}') // => { V: '' }

这不是:

JSON.parse('{\"V\":\"\u0000\"}') // >> SyntaxError: Unexpected token   in JSON at position 6

这里的概念是什么?

2 个答案:

答案 0 :(得分:3)

您可以在R for Windows FAQ中找到一些信息。例如:

  

<强> 2.5。字符串

     

字符串的表示类似于C中使用的约定   编程语言家族。字符串的开头和结尾      引号。所有Unicode字符都可以放在      除了必须转义的字符之外的引号:      引号,反向实线和控制字符(U + 0000      通过U + 001F)。

现在,与您的问题相关,您只需要转义unicode字符上的\以便解析工作:

JSON.parse('{"V":"\\u0000"}')

结果:{V: "�"}

只是为了您的信息,无需在javascript中的单引号字符串中转义"

答案 1 :(得分:0)

唯一的问题是您将JSON表达为Javascript字符串文字。这是有效的JSON:

{"V":"\u0000"}

但这是一个包含值{"V":"<NUL>"}的Javascript字符串:

'{\"V\":\"\u0000\"}'

Javascript已经解释了\u0000转义序列,JSON.parse因此试图解析其中包含NUL字节的JSON字符串,这是非法的(NUL必须逃脱)。

您尝试的JSON的实际Javascript字符串文字表示形式为:

JSON.parse('{"V":"\\u0000"}')
                  ↑