【发布时间】:2019-01-23 13:36:01
【问题描述】:
我有一些外部服务会向我发送下一个 json:
json_str = b'{"a": "\xc3-----\xa4-----\x13"}'
当我试图解析它时,我得到下一个错误:
----> 1 json.loads(json_str)
ValueError: Invalid control character at: line 1 column 20 (char 19)
我设法使用下一个命令正确解析它:
In [37]: eval(json_str)
Out[37]: {'a': '\xc3-----\xa4-----\x13'}
关于如何以另一种方式解析它有什么想法吗?
【问题讨论】:
-
根据定义,JSON 是 Unicode 文本。如果您有一个字节字符串,您需要首先对其进行解码以获得可以解析为 JSON 的 Unicode 字符串。 Python 对字节和字符串的区别非常严格,即使两者之间的映射是微不足道的。
-
eval仅“有效”,因为除了有效 JSON 表达式的编码之外,这些字节恰好是有效的 Python 表达式。 -
是的,现在我知道如何处理它了。在此之前,我没有解码就正确解析,这些符号让我很困惑。
-
注意错误是指
\x13表示的单个控制字符,不能直接用在JSON值中。
标签: python json python-3.x