一、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