簡體   English   中英

如何使用 IJSON kvitems 訪問 JSON 文件中的所有密鑰?

[英]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'}}

這里keyfilename ,而value是 object 的 rest ,因為整個 object 是filename下的值。 特別是namefiletype等鍵不會單獨報告; 如果您希望報告這些(及其各自的值),則必須改用filename.file_data前綴。

根據原始問題中的評論,我猜這是實際問題,但無法在此處添加更廣泛的評論以進一步澄清事情,並希望它也是您問題的實際答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM