簡體   English   中英

如何使用python以更通用的方式讀取json文件?

[英]How to read the json file using python in more generic way?

我有一個json文件如下:

    {
    "Alib": {
            "depends": null,
            "locked": false,
            "stage": "xyz",
            "version": "1.2.3"
        }
    "Blib": {
            "depends": null,
            "locked": false,
            "stage": "abc",
            "version": "4.3.8"
        }
    "clib": {
            "depends": null,
            "locked": false,
            "stage": "def",
            "version": "5.2.6"
        }
    }

現在我想以一種方式讀取這個json文件,我得到了lib名稱和關於該lib的版本。 目前我的解決方案如下:

    with open (jsonfile) as data_file:
                file = json.load(data_file)
            print file["alib"]["version"]
            print file["blib"]["version"]
            print file["clib"]["version"]

我確實得到了每個lib版本的細節,但這不是我想要的。 我不想提供硬編碼到代碼中的lib的名稱。 它應該是這樣的:

  with open (jsonfile) as data_file:
                file = json.load(data_file)
      print file[lib]["version"]

我得到了lib的名稱以及獨立版本。 所以,請建議我如何實現這種解決方案,我不提供庫的名稱,並使更通用。

將json存儲到變量“file”中后,可以遍歷它以打印每個元素。

for lib in file:
    print lib, file[lib]["version"]

您的json文件作為dict加載。 每個鍵都是一個庫名,值是dict

import json
import io

content = '''\
{
    "Alib": {
            "depends": null,
            "locked": false,
            "stage": "xyz",
            "version": "1.2.3"
        },
    "Blib": {
            "depends": null,
            "locked": false,
            "stage": "abc",
            "version": "4.3.8"
        },
    "clib": {
            "depends": null,
            "locked": false,
            "stage": "def",
            "version": "5.2.6"
        }
}'''

fp = io.BytesIO(content)  # can be a real file
json_obj = json.load(fp)

您可以顯示如下的庫版本:

for lib, attrs in json_obj.items():
    print(u"{lib}: version={version}".format(lib=lib, version=attrs["version"]))

你得到:

Alib: version=1.2.3
Blib: version=4.3.8
clib: version=5.2.6

.keys()函數應該派上用場。

with open (jsonfile) as data_file:
     file = json.load(data_file)
     for key in file.keys():
         print file[key]["version"]

有關更多詳細信息,請參閱相關問題,例如python JSON,只能在第一級獲取密鑰

暫無
暫無

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

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