詳解python讀寫json文件
python處理json文本文件主要是以下四個函數:
函數 | 作用 |
---|---|
json.dumps | 對數據進行編碼,將python中的字典 轉換為 字符串 |
json.loads | 對數據進行解碼,將 字符串 轉換為 python中的字典 |
json.dump | 將dict數據寫入json文件中 |
json.load | 打開json文件,並把字符串轉換為python的dict數據 |
json.dumps / json.loads
數據轉換對照:
json | python |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
代碼示例:
import json tesdic = { 'name': 'Tom', 'age': 18, 'score': { 'math': 98, 'chinese': 99 } } print(type(tesdic)) json_str = json.dumps(tesdic) print(json_str) print(type(json_str)) newdic = json.loads(json_str) print(newdic) print(type(newdic))
輸出為:
<class 'dict'> {"name": "Tom", "age": 18, "score": {"math": 98, "chinese": 99}} <class 'str'> {'name': 'Tom', 'age': 18, 'score': {'math': 98, 'chinese': 99}} <class 'dict'>
json.dump / json.load
寫入json的內容隻能是dict類型,字符串類型的將會導致寫入格式問題:
with open("res.json", 'w', encoding='utf-8') as fw: json.dump(json_str, fw, indent=4, ensure_ascii=False)
則json文件內容為:
"{\"name\": \"Tom\", \"age\": 18, \"score\": {\"math\": 98, \"chinese\": 99}}"
我們換一種數據類型寫入:
with open("res.json", 'w', encoding='utf-8') as fw: json.dump(tesdic, fw, indent=4, ensure_ascii=False)
則生成的josn就是正確的格式:
{ "name": "Tom", "age": 18, "score": { "math": 98, "chinese": 99 } }
同理,從json中讀取到的數據也是dict類型:
with open("res.json", 'r', encoding='utf-8') as fw: injson = json.load(fw) print(injson) print(type(injson))
{'name': 'Tom', 'age': 18, 'score': {'math': 98, 'chinese': 99}} <class 'dict'>
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- python編程普通及類和靜態方法示例詳解
- Python序列化與反序列化相關知識總結
- Python序列化模塊之pickle與json詳解
- Python常用標準庫詳解(pickle序列化和JSON序列化)
- 關於 Python json中load和loads區別