[英]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.