[英]Correct way of loading JSON from file into a Python dictionary
我目前正在執行此操作,以將JSON保存到文件:
with open(filename, 'w+') as f:
json.dump(data, f)
我這樣做是為了將JSON從文件加載到Python字典中:
with open(filename, 'r') as f:
data = json.loads(json.load(f))
我了解json.load
從文件中加載JSON,而json.loads
從字符串中加載JSON。
當我調用json.load(f)
從文件中加載JSON時,我得到了JSON對象的字符串表示形式:
'{"a": 1,"b": 2,"c": 3}'
然后,我調用json.loads(json.load(f))
將該字符串表示形式轉換為Python字典:
{'a': 1, 'b': 2, 'c': 3}
我了解我也可以使用ast.literal_eval()
將字符串轉換為Python字典。
我的問題是-將JSON從文件目錄加載到Python字典中的正確方法是什么? 是否真的需要同時調用json.loads
和json.load
來將文件中的JSON轉換為字典?
您的data
必須已經是一個JSON字符串,然后在json.dump
期間對其進行了雙重編碼。 然后,當然您需要稍后對其進行雙解碼。 因此,與其將原始JSON再次用JSON編碼,不如直接將其寫入文件中:
with open(filename, 'w+') as f:
f.write(data)
免責聲明:我不知道這是否是正確的正確方法,但對我有用:
jd0 = {
'foo': 1337,
'bar': 'baz'
}
# Dump it somewhere
with open('/Dump/it/somewhere/test.json', 'w') as fh:
json.dump(jd0, fh)
如果我隨后加載它,則它再次成為字典:
with open('/Dump/it/somewhere/test.json', 'r') as fh:
jd1 = json.load(fh)
print type(jd1) == dict
打印
True
您當前的方法在這里是正確的。 對於json.loads()
和ast.literal_eval()
,他們正在解析完全不同的語言。 如果您的json文件正是您粘貼在此處的內容,我建議您使用json庫,因為它更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.