我使用ijson.kviitems来迭代JSON文件中的所有键
JSON文件如下所示:
{"filename":{"file_data":
{"name":"samplefile",
"filetype":"Miscellaneous",
"id":123,
"timestamp":"2020-10-08 00:20:00"}}}
基于this answer,我的代码的简化版本看起来是这样的(v也是字典):
import ijson
f = open('file.json')
for k, v in ijson.kvitems(f, ''):
name = v['name']
user_id = v['id']
filetype = v['filetype']
timestamp = v['timestamp']
我只能以这种方式从原始文件中流式传输/读取大约94%的密钥,试图找出是否有办法达到剩余的6%
谢谢
kvitems
的文档可能不太清楚:它返回给定前缀处的键/值对,并且不是递归的。在您的示例文档和代码中,kvitems
返回的内容如下(请注意,截至编写之时,ijson.dump
尚未出现在最新的PyPI ijson版本上,但在GitHub上的最新master
版本上可用):这里
key
是filename
,而value
是对象的其余部分,因为整个对象是filename
下的值。特别是像name
或filetype
这样的键不会单独报告;如果希望报告这些(及其各自的值),则必须使用filename.file_data
前缀根据原始问题中的评论,我猜这是实际问题,但不能在这里添加更广泛的评论来进一步澄清问题,希望这也是您问题的实际答案
相关问题 更多 >
编程相关推荐