【发布时间】:2022-07-07 12:33:37
【问题描述】:
编辑:我已经看到关于 SA 的所有问题,他们都给了我我在这里问的错误 - 请你把它打开以便我能得到一些帮助吗?
我有一个文件可以使用 Bash 非常简单地读取,如下所示:
gzip -d -c my_file.json.gz | jq .
这确认它是有效的 JSON。但是当我尝试像这样使用 Python 阅读它时:
import json
import gzip
with gzip.open('my_file.json.gz') as f:
data = f.read() # returns a byte string `b'`
json.loads(data)
我得到错误:
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 1632)
但我知道它是来自我的 Bash 命令的有效 JSON。我已经被这个看似简单的问题困扰了很长时间,并且尝试了所有感觉。任何人都可以帮忙吗?谢谢。
【问题讨论】:
-
如果即使您修复了二进制错误,您的问题仍然可以重现,请edit 这(可能修复红鲱鱼并)提供minimal reproducible example 与显示问题的数据。根据您提供的诊断信息,我们只能得出结论,Python 的 JSON 解析器比
jq中的解析器更严格。特别是,jq允许输入具有多个 JSON 结构,每个结构都位于单独的行上,但这不是有效的 JSON。 -
我更新了另一个副本来解释那部分。