
- Python 資料持久化教程
- Python 資料持久化 - 首頁
- Python 資料持久化 - 簡介
- Python 資料持久化 - 檔案 API
- 使用 os 模組進行檔案處理
- Python 資料持久化 - 物件序列化
- Python 資料持久化 - Pickle 模組
- Python 資料持久化 - Marshal 模組
- Python 資料持久化 - Shelve 模組
- Python 資料持久化 - dbm 包
- Python 資料持久化 - CSV 模組
- Python 資料持久化 - JSON 模組
- Python 資料持久化 - XML 解析器
- Python 資料持久化 - Plistlib 模組
- Python 資料持久化 - Sqlite3 模組
- Python 資料持久化 - SQLAlchemy
- Python 資料持久化 - PyMongo 模組
- Python 資料持久化 - Cassandra 驅動程式
- 資料持久化 - ZODB
- 資料持久化 - Openpyxl 模組
- Python 資料持久化資源
- Python 資料持久化 - 快速指南
- Python 資料持久化 - 有用資源
- Python 資料持久化 - 討論
Python 資料持久化 - JSON 模組
JSON 代表 **JavaScript 物件表示法 (JavaScript Object Notation)**。它是一種輕量級的資料交換格式。它是一種與語言無關且跨平臺的文字格式,許多程式語言都支援它。此格式用於 Web 伺服器和客戶端之間的資料交換。
JSON 格式類似於 pickle。但是,pickle 序列化是 Python 特定的,而 JSON 格式由多種語言實現,因此已成為通用標準。Python 標準庫中 json 模組的功能和介面類似於 pickle 和 marshal 模組。
與 pickle 模組一樣,json 模組也提供 **dumps()** 和 **loads()** 函式,用於將 Python 物件序列化為 JSON 編碼的字串,以及 **dump()** 和 **load()** 函式,用於將序列化後的 Python 物件寫入檔案或從檔案中讀取。
**dumps()** − 此函式將物件轉換為 JSON 格式。
**loads()** − 此函式將 JSON 字串轉換回 Python 物件。
以下示例演示了這些函式的基本用法:
import json data=['Rakesh',{'marks':(50,60,70)}] s=json.dumps(data) json.loads(s)
dumps() 函式可以採用可選的 sort_keys 引數。預設情況下,它是 False。如果設定為 True,則字典鍵將按排序順序出現在 JSON 字串中。
dumps() 函式還有一個可選引數,稱為 indent,它採用數字作為值。它決定 JSON 字串格式化表示的每個段的長度,類似於列印輸出。
json 模組還具有與上述函式相對應的面向物件 API。模組中定義了兩個類 - JSONEncoder 和 JSONDecoder。
JSONEncoder 類
此類的物件是 Python 資料結構的編碼器。每個 Python 資料型別都轉換為對應的 JSON 型別,如下表所示:
Python | JSON |
---|---|
字典 | 物件 |
列表,元組 | 陣列 |
字串 | 字串 |
整數,浮點數,整數和浮點派生列舉 | 數字 |
True | true |
False | false |
None | null |
JSONEncoder 類由 JSONEncoder() 建構函式例項化。編碼器類中定義了以下重要方法:
序號 | 方法和描述 |
---|---|
1 |
encode() 將 Python 物件序列化為 JSON 格式 |
2 |
iterencode() 編碼物件並返回一個迭代器,該迭代器生成物件中每個專案的編碼形式。 |
3 |
indent 確定編碼字串的縮排級別 |
4 |
sort_keys 為 true 或 false,使鍵按排序順序出現或不出現。 |
5 |
check_circular 如果為 True,則檢查容器型別物件中的迴圈引用 |
以下示例對 Python 列表物件進行編碼。
e=json.JSONEncoder() e.encode(data)
JSONDecoder 類
此類的物件有助於將 JSON 字串解碼回 Python 資料結構。此類中的主要方法是 decode()。以下示例程式碼從前面步驟中的編碼字串中檢索 Python 列表物件。
d=json.JSONDecoder() d.decode(s)
json 模組定義了 **load()** 和 **dump()** 函式,用於將 JSON 資料寫入檔案類物件(可能是磁碟檔案或位元組流)並從中讀取資料。
dump()
此函式將 JSON 編碼的 Python 物件資料寫入檔案。該檔案必須以 'w' 模式開啟。
import json data=['Rakesh', {'marks': (50, 60, 70)}] fp=open('json.txt','w') json.dump(data,fp) fp.close()
此程式碼將在當前目錄中建立 'json.txt'。它顯示內容如下:
["Rakesh", {"marks": [50, 60, 70]}]
load()
此函式從檔案中載入 JSON 資料並返回其中的 Python 物件。該檔案必須以讀取許可權開啟(應具有 'r' 模式)。
示例
fp=open('json.txt','r') ret=json.load(fp) print (ret) fp.close()
輸出
['Rakesh', {'marks': [50, 60, 70]}]
**json.tool** 模組還具有一個命令列介面,該介面驗證檔案中的資料並以漂亮的格式化方式列印 JSON 物件。
C:\python37>python -m json.tool json.txt [ "Rakesh", { "marks": [ 50, 60, 70 ] } ]