Python3 JSON 資料解析

Python3 JSON 資料解析

JSON (JavaScript Object Notation) 是一種輕量級的資料交換格式。

如果你還不瞭解 JSON,可以先閱讀我們的 JSON 教程。

Python3 中可以使用 json 模組來對 JSON 資料進行編解碼,它包含了兩個函式:

  • json.dumps(): 對資料進行編碼。
  • json.loads(): 對資料進行解碼。

在j son 的編解碼過程中,Python 的原始型別與 json 型別會相互轉換,具體的轉化對照如下:

Python 編碼為 JSON 型別轉換對應表:

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

JSON 解碼為 Python 型別轉換對應表:

JSON Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

json.dumps 與 json.loads 例項

以下例項演示了 Python 資料結構轉換為JSON:

例項(Python 3.0+)

#!/usr/bin/python3 import json # Python 字典型別轉換為 JSON 物件 data = { 'no' : 1, 'name' : 'itread01', 'url' : 'http://www.itread01.com' } json_str = json.dumps(data) print ("Python 原始資料:", repr(data)) print ("JSON 物件:", json_str)

執行以上程式碼輸出結果為:

Python 原始資料: {'url': 'http://www.itread01.com', 'no': 1, 'name': 'itread01'}
JSON 物件: {"url": "http://www.itread01.com", "no": 1, "name": "itread01"}

通過輸出的結果可以看出,簡單型別通過編碼後跟其原始的repr()輸出結果非常相似。

接著以上例項,我們可以將一個JSON編碼的字串轉換回一個Python資料結構:

例項(Python 3.0+)

#!/usr/bin/python3 import json # Python 字典型別轉換為 JSON 物件 data1 = { 'no' : 1, 'name' : 'itread01', 'url' : 'http://www.itread01.com' } json_str = json.dumps(data1) print ("Python 原始資料:", repr(data1)) print ("JSON 物件:", json_str) # 將 JSON 物件轉換為 Python 字典 data2 = json.loads(json_str) print ("data2['name']: ", data2['name']) print ("data2['url']: ", data2['url'])

執行以上程式碼輸出結果為:

Python 原始資料: {'name': 'itread01', 'no': 1, 'url': 'http://www.itread01.com'}
JSON 物件: {"name": "itread01", "no": 1, "url": "http://www.itread01.com"}
data2['name']:  itread01
data2['url']:  http://www.itread01.com

如果你要處理的是檔案而不是字串,你可以使用 json.dump()json.load() 來編碼和解碼JSON資料。例如:

例項(Python 3.0+)

# 寫入 JSON 資料 with open('data.json', 'w') as f: json.dump(data, f) # 讀取資料 with open('data.json', 'r') as f: data = json.load(f)

更多資料請參考:https://docs.python.org/3/library/json.html