json.loads(s) 能將 JSON 格式的資料,轉換為 Python 的字典 dict 型別,下方的例子,同樣會先 open 範例的 json 檔案 ( 模式使用 r ),接著使用 json.load 讀取該檔案轉換為 dict 型別,最後使用 for 迴圈將內容印出 ( 用法上與 load 不太相同,load 讀取的是檔案,loads 是讀取的是資料 )。
import json
jsonFile = open('/content/drive/MyDrive/Colab Notebooks/json-demo.json','r')
f = jsonFile.read() # 要先使用 read 讀取檔案
a = json.loads(f) # 再使用 loads
for i in a:
print(i, a[i])
name oxxo
sex male
age 18
phone [{'type': 'home', 'number': '07 1234567'}, {'type': 'office', 'number': '07 7654321'}]
json.dump(obj, fp) 能將字典 dict 型別的資料轉換成 JSON 格式,寫入本機 JSON 檔案,資料在轉換時,會按照下列表格的規則,轉換為 JSON 資料格式。
Python
dict 字典
object 物件
list 陣列、tuple 元組/數組
array 陣列
str 文字/字串
string 文字/字串
int, float 各種數字
number 數字
False
false
下方的程式碼,會先 open 範例的 json 檔案 ( 模式使用 w ),接著編輯一個 data 的字典資料,完成後使用 dump 的方式將資料寫入 json 檔案中。
import json
jsonFile = open('/content/drive/MyDrive/Colab Notebooks/json-demo.json','w')
data = {}
data['name'] = 'oxxo'
data['age'] = 18
data['eat'] = ['apple','orange']
json.dump(data, jsonFile)
寫入之後 JSON 檔案的內容:
{"name": "oxxo", "age": 18, "eat": ["apple", "orange"]}
如果設定「indent」可以將寫入的資料進行縮排的排版。
import json
jsonFile = open('/content/drive/MyDrive/Colab Notebooks/json-demo.json','w')
data = {}
data['name'] = 'oxxo'
data['age'] = 18
data['eat'] = ['apple','orange']
json.dump(data, jsonFile, indent=2)
寫入之後 JSON 檔案的內容:
"name": "oxxo",
"age": 18,
"eat": [
"apple",
"orange"
json.dumps(obj) 能將字典 dict 型別的資料轉換為 JSON 格式的資料,下方的例子,同樣會先 open 範例的 json 檔案 ( 模式使用 w ),接著使用 json.dumps 將 dict 字典的資料轉換為 JSON 格式,最後使用 write 將資料寫入 ( 用法上與 dump 不太相同,dump 轉換資料並寫入檔案,dumps 只是轉換資料 )。
import json
jsonFile = open('/content/drive/MyDrive/Colab Notebooks/json-demo.json','w')
data = {}
data['name'] = 'oxxo'
data['age'] = 18
data['eat'] = ['apple','orange']
w = json.dumps(data) # 產生要寫入的資料
jsonFile.write(w) # 寫入資料
jsonFile.close()
寫入之後 JSON 檔案的內容:
{"name": "oxxo", "age": 18, "eat": ["apple", "orange"]}
然而 dumps 也可以單純作為轉換格式使用。
import json
jsonFile = open('/content/drive/MyDrive/Colab Notebooks/json-demo.json','r')
data = {}
data['name'] = 'oxxo'
data['age'] = 18
data['eat'] = ['apple','orange']
w = json.dumps(data)
print(w)
# {"name": "oxxo", "age": 18, "eat": ["apple", "orange"]}
json.JSONDecoder() 會將 JSON 格式的資料,轉換為 Python 的字典 dict 型別 ( json.load 和 json.loads 預設會使用 json.JSONDecoder() )。
import json
jsonFile = open('/content/drive/MyDrive/Colab Notebooks/json-demo.json','r')
data = jsonFile.read()
r = json.JSONDecoder().decode(data)
print(r)
# {'name': 'oxxo', 'age': 18, 'eat': ['apple', 'orange']}