「關注我,和我一塊兒放下靈魂,讓靈魂去搬磚。」正則表達式
Python版本3.8.0,開發工具:Pycharm編程
什麼是JSON?json
JSON 的全稱是 JavaScript Object Notation,即 JavaScript 對象符號,它是一種輕量級、跨平臺、跨語言的數據交換格式,其設計意圖是把全部事情都用設計的字符串來表示,這樣既方便在互聯網上傳遞信息,也方便人進行閱讀。數組
==JSON 主要有兩種數據結構:==bash
當程序把 JSON 對象或 JSON 字符串轉換成 Python 對象時,從 JSON 類型到 Python 類型的轉換關係以下所示:微信
JSON類型 | Python類型 |
---|---|
JSON 類型 | Python 類型 |
對象(object) | 字典(dict) |
數組(array | 列表(list) |
字符串(string) | 字符串(str) |
整數(number(int)) | 整數(int) |
實數(number(real)) | 浮點數(float) |
true | True |
false | False |
null | None |
一樣的,當程序把 Python 對象轉換成 JSON 格式字符串時,從 Python 類型到 JSON 類型的轉換關係以下所示:cookie
Python類型 | JSON類型 |
---|---|
Python 類型 | JSON 類型 |
字典(dict) | 對象(object) |
列表(list)和元組(tuple) | 數組(array) |
字符串(str) | 字符串(string) |
整型、浮點數,枚舉 | 數值型(number) |
True | true |
False | false |
None | null |
Python3 中可使用 json 模塊來對 JSON 數據進行編解碼,它包含了兩個函數:數據結構
==使用dumps函數對數據進行編碼==多線程
import json
# 建立字典類型Person
person = {
'name': '知秋小夢',
'gender': 'male',
'age': 18
}
# Python字典類型轉換爲JSON對象
json_person = json.dumps(person)
print(json_person)
# 輸出
{"name": "\u77e5\u79cb\u5c0f\u68a6", "gender": "male", "age": 18}
複製代碼
輸出的中文是中文的ascii字符碼,而不是真正的中文。 這是由於json.dumps 序列化時對中文默認使用的ascii編碼 所以須要使用ensure_ascii=False來指定出中文函數
# 設置不適用ascll編碼
json_person = json.dumps(person,ensure_ascii=False)
print(json_person)
# 輸出
{"name": "知秋小夢", "gender": "male", "age": 18}
複製代碼
==使用loads函數對數據進行解碼==
# 將 JSON 對象轉換爲 Python 字典
dict_person = json.loads(json_person)
print("person['name']: ",dict_person['name'])
print("person['age']: ", dict_person['age'])
# 輸出
person['name']: 知秋小夢
person['age']: 18
複製代碼
dumps()和loads()主要用於Python和json對象的相互轉化,dump()與load()主要用於讀寫json文件
# 寫入 JSON 數據
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f)
# 讀取 JSON 數據
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
複製代碼
open函數的用法在文件章節有介紹
JSON做爲數據存儲、交互用的比較多,好比網頁cookie、數據交互等,建議掌握!
Python系列會持續更新,從基礎入門到進階技巧,從編程語法到項目實戰。若您在閱讀的過程當中發現文章存在錯誤,煩請指正,很是感謝;若您在閱讀的過程當中能有所收穫,歡迎一塊兒分享交流。
若是你也想和我一塊兒學習Python,能夠關注個人微信公衆號
學習Python,咱們不僅是說說而已