Python入門進階教程-JSON操做

「關注我,和我一塊兒放下靈魂,讓靈魂去搬磚。」正則表達式

Python JSON操做

Python版本3.8.0,開發工具:Pycharm編程

什麼是JSON?json

JSON 的全稱是 JavaScript Object Notation,即 JavaScript 對象符號,它是一種輕量級、跨平臺、跨語言的數據交換格式,其設計意圖是把全部事情都用設計的字符串來表示,這樣既方便在互聯網上傳遞信息,也方便人進行閱讀。數組

==JSON 主要有兩種數據結構:==bash

  • 由 key-value對組成的數據結構。這種數據結構在不一樣的語言中有不一樣的實現。例如在 Python中是一種 dict 對象;在C語言中是一個struct;在其餘語言中,則多是 record等。
  • 有序集合。這種數據結構在 Python 中對應於列表;在其餘語言中,可能對應於 list等。

JSON類型轉換

當程序把 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

json模塊

Python3 中可使用 json 模塊來對 JSON 數據進行編解碼,它包含了兩個函數:數據結構

  • json.dumps(): 對數據進行編碼。
  • json.loads(): 對數據進行解碼。

==使用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
複製代碼

json文件

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入門進階教程-正則表達式

Python入門進階教程-面向對象

Python入門基礎彙總


Python系列

Python系列會持續更新,從基礎入門到進階技巧,從編程語法到項目實戰。若您在閱讀的過程當中發現文章存在錯誤,煩請指正,很是感謝;若您在閱讀的過程當中能有所收穫,歡迎一塊兒分享交流。

若是你也想和我一塊兒學習Python,能夠關注個人微信公衆號

學習Python,咱們不僅是說說而已

相關文章
相關標籤/搜索