JSON.parse没有逃跑

2024-10-04 01:24:33 发布

您现在位置:Python中文网/ 问答频道 /正文

在JavaScript中是否有这样的方法:

$ cat test.json 
{"body":"\u0000"}

$ python3 -c 'import json; print(json.load(open("test.json", "r")))'
{'body': '\x00'}

注意,上面的数据只有一个\(不需要转义)。所以在JavaScript中有以下情况:

^{pr2}$

由于可能有来自二进制源(websocket)的UTF-8数据,可以像上面第一个python示例那样直接处理这些数据吗?在


Tags: 数据方法testimportjson情况loadbody
1条回答
网友
1楼 · 发布于 2024-10-04 01:24:33

\u0000到{}的字符串字符被视为控制字符,根据RFC-7159,不允许在JSON中使用字符,并且必须进行转义,如in section 7。在

您要做的是将未转义的控制字符放入JSON中,这显然是不可接受的,您必须首先对其进行转义,没有一种语言接受它,甚至Python也是如此。在

正确的答案是将UTF-8编码值放入包含JSON格式的字符串中。在

这是一个正确的JSON,它将由任何语言的JSON解析器解析,即使是JavaScript:

{"body":"\u0000"}

这是一个不正确的JSON(将[NUL]视为NUL控制字符,因为它不能用文本表示):

^{pr2}$

这就是JSON.parse('{"body":"\\u0000"}')起作用而{}不起作用的原因

希望,它能澄清你的测试出了什么问题。在

相关问题 更多 >