[英]How Can I Access All of The Keys in a JSON File Using IJSON kvitems?
我正在使用 ijson.kvitems 遍歷我擁有的 JSON 文件中的所有鍵。
JSON 文件如下所示:
{"filename":{"file_data":
{"name":"samplefile",
"filetype":"Miscellaneous",
"id":123,
"timestamp":"2020-10-08 00:20:00"}}}
基於這個答案,我的代碼的簡化版本看起來像這樣(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
版本上可用):
echo '{
"filename": {
"file_data": {
"name":"samplefile",
"filetype":"Miscellaneous",
"id":123,
"timestamp":"2020-10-08 00:20:00"
}
}
}' | python -m ijson.dump -m kvitems
#: key, value
-------------
0: filename, {'file_data': {'name': 'samplefile', 'filetype': 'Miscellaneous', 'id': 123, 'timestamp': '2020-10-08 00:20:00'}}
這里key
是filename
,而value
是 object 的 rest ,因為整個 object 是filename
下的值。 特別是name
或filetype
等鍵不會單獨報告; 如果您希望報告這些(及其各自的值),則必須改用filename.file_data
前綴。
根據原始問題中的評論,我猜這是實際問題,但無法在此處添加更廣泛的評論以進一步澄清事情,並希望它也是您問題的實際答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.