一、JSON簡介
JavaScript Object Notation(JSON)是一種輕量級的數據交換格式,常用於前後端交互的數據傳輸。它通過鍵值對的方式來表示數據,具有易讀性、易編寫性、易解析性等優點,成為前後端交互數據的常用格式。
二、Python中的JSON庫
Python標準庫中的json模塊提供了JSON數據的編碼和解碼功能,可以實現JSON字元串與Python對象之間的轉換。該模塊包含了兩個主要的函數:dumps()和loads()。
三、JSON數據的編碼與解碼
使用json.dumps()函數可以將Python對象編碼為JSON格式的字元串,使用json.loads()函數可以將JSON格式的字元串解碼為Python對象。
import json
# 編碼Python對象
data = {'name': 'Tom', 'age': 20, 'score': [80, 90, 95]}
json_str = json.dumps(data)
print(json_str)
# 解碼JSON字元串
data = json.loads(json_str)
print(data)
以上代碼輸出結果為:
{"name": "Tom", "age": 20, "score": [80, 90, 95]}{'name': 'Tom', 'age': 20, 'score': [80, 90, 95]}四、JSON數據的格式化輸出
使用json.dumps()函數時,可以通過參數控制輸出的格式。其中,indent參數可以指定縮進空格數,sort_keys參數可以控制是否按照鍵排序。
import json
# 格式化輸出JSON字元串
data = {'name': 'Tom', 'age': 20, 'score': [80, 90, 95]}
json_str = json.dumps(data, indent=4, sort_keys=True)
print(json_str)
以上代碼輸出結果為:
{
"age": 20,
"name": "Tom",
"score": [
80,
90,
95
]
}五、JSON數據中的特殊數據類型處理
JSON數據中支持的數據類型包括:對象、數組、數字、字元串、布爾值和null。Python中也存在一些特殊的數據類型,如datetime類型、Decimal類型等,這些數據類型需要進行特殊的處理。
例如,處理datetime類型時,可以使用自定義的encoder類來實現:
import json
from datetime import datetime
class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
return json.JSONEncoder.default(self, obj)
# 編碼Python對象
data = {'name': 'Tom', 'birthday': datetime.now()}
json_str = json.dumps(data, cls=DateTimeEncoder)
print(json_str)
# 解碼JSON字元串
data = json.loads(json_str)
print(data)
以上代碼輸出結果為:
{"name": "Tom", "birthday": "2022-05-09 13:42:16"}{'name': 'Tom', 'birthday': '2022-05-09 13:42:16'}六、小結
Python中的json模塊提供了JSON數據的編碼和解碼功能,非常方便地實現了Python對象與JSON字元串之間的轉換。針對JSON中的特殊數據類型,可以使用自定義的encoder類來實現特殊處理。熟練掌握json模塊的使用,可以幫助我們更好地進行前後端數據交互。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183273.html
微信掃一掃
支付寶掃一掃