Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中用字节解析JSON_Python_Json_Python 3.x - Fatal编程技术网

在Python中用字节解析JSON

在Python中用字节解析JSON,python,json,python-3.x,Python,Json,Python 3.x,我有一些外部服务发送给我下一个json: json_str = b'{"a": "\xc3-----\xa4-----\x13"}' 当我试图解析它时,我得到下一个错误: ----> 1 json.loads(json_str) ValueError: Invalid control character at: line 1 column 20 (char 19) 我使用next命令成功地正确解析了它: In [37]: eval(json_str) Out[37]: {'a': '\

我有一些外部服务发送给我下一个json:

json_str = b'{"a": "\xc3-----\xa4-----\x13"}'
当我试图解析它时,我得到下一个错误:

----> 1 json.loads(json_str)
ValueError: Invalid control character at: line 1 column 20 (char 19)
我使用next命令成功地正确解析了它:

In [37]: eval(json_str)
Out[37]: {'a': '\xc3-----\xa4-----\x13'}

关于如何以另一种方式解析它,有什么想法吗?

我找到了一种使用
.decode
json.loads
函数的方法

希望这有帮助

>>> json.loads(json_str.decode("latin-1"), strict=False)
{u'a': u'\xc3-----\xa4-----\x13'}
输出仍为unicode格式

参考资料


根据定义,JSON是Unicode文本。如果您有一个字节字符串,则需要首先对其进行解码,以获得可以解析为JSON的Unicode字符串。Python对字节和字符串之间的区别非常严格,即使两者之间的映射很简单。
eval
仅“起作用”,因为字节恰好是一个有效的Python表达式,而不是一个有效的JSON表达式的编码。是的,现在我了解了如何处理它。在此之前,我没有解码就正确解析了它,这些符号让我感到困惑。请注意,错误是指由
\x13
表示的单个控制字符,它不能直接用于JSON值。谢谢!看起来像是我需要的