![](/img/trans.png)
[英]how to get fields and values from a specific key of json file in python
[英]Select Specific Fields From JSON File - Python
我正在嘗試比較兩個json文件。 一個是json.dump,另一個是傳入該方法的新json對象。
我們使用來自服務器的測試結果生成一個JSON文件,然后將它們傳遞到此方法中:
def save_json_results(data):
if not os.listdir('/opt/Code/JSON'):
with open('/opt/Code/JSON/current_json.json','w') as outfile:
json.dump(data,outfile)
send_json_results(data)
else:
f = open('/opt/Code/JSON/current_json.json')
file_data = json.loads(f)
d = json.loads(data)
if sorted(file_data.items()) == sorted(d.items()) and file_data.get("timestamp",{}) != d.get("timestamp",{}):
with open('/opt/Code/JSON/current_json.json','w') as outfile:
json.dump(data,outfile)
else:
os.rename('/opt/Code/JSON/current_json.json','/opt/cfm_health_checks/Code/JSON/prev_json.json')
with open('/opt/Code/JSON/current_json.json','w') as outfile:
json.dump(data,outfile)
send_json_results(data)
此方法的前提是獲取傳入的(數據)JSON對象,然后檢查目錄是否為空,然后將該文件存儲為最新的JSON,否則它將嘗試打開文件。已經存在(假設我必須將其重新加載為JSON對象,這可能是錯誤的),然后嘗試比較文件,如果它們相同且只有時間戳不同,則不要將JSON發送到數據庫(因為它只是浪費網絡資源,因為關於測試結果的信息沒有不同),但是它仍將使新數據=最新的JSON,否則會將其發送到數據庫並相應地重命名文件。
{
"acronym": "",
"api": [],
"cell_version": "",
"cfm": [],
"city": "Belfast",
"country": "UK",
"latitude": 54.614443,
"longitude": -5.899953,
"nas": [],
"node": [],
"number_of_cells": "",
"switch": [],
"timestamp": "2015-01-19 15:04:13.489097"
}
上面的示例JSON。
該d
和file_data
通過返回的對象json.loads
應該有標准的Python字典接口。
因此,您應該能夠使用d["acronym"]
訪問d
的首字母縮寫值。
您還可以for keyvaluepair in file_data.items():
遍歷每個JSON條目,並根據鍵名將單獨的比較應用於每個鍵值對。
[d[k[0]] for k in sorted(d.items()) if k[0] != "timestamp"] == [file_data[k[0]] for k in sorted(file_data.items()) if k[0] != "timestamp"]
做[d[k[0]] for k in sorted(d.items()) if k[0] != "timestamp"] == [file_data[k[0]] for k in sorted(file_data.items()) if k[0] != "timestamp"]
雖然那是很長的一行,但我個人不會讓它經過代碼審查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.