python使用json序列化datetime類型實例解析
使用python的json模塊序列化時間或者其他不支持的類型時會拋異常,例如下面的代碼:
# -*- coding: cp936 -*- from datetime import datetime import json if __name__=='__main__': now = datetime.now() json.dumps({'now':now})
運行會出現(xiàn)下面的錯誤信息:
Traceback (most recent call last): File "C:\Users\xx\Desktop\t.py", line 8, in <module> json.dumps({'now':now}) File "C:\Python27\lib\json\__init__.py", line 231, in dumps return _default_encoder.encode(obj) File "C:\Python27\lib\json\encoder.py", line 201, in encode chunks = self.iterencode(o, _one_shot=True) File "C:\Python27\lib\json\encoder.py", line 264, in iterencode return _iterencode(o, 0) File "C:\Python27\lib\json\encoder.py", line 178, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: datetime.datetime(2012, 12, 26, 11, 51, 33, 409000) is not JSON serializable
意思是說datetime類不支持Json序列化
我們需要對json做下擴(kuò)展,讓它可以支持datetime類型。
class ComplexEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj, date): return obj.strftime('%Y-%m-%d') else: return json.JSONEncoder.default(self, obj)
在調(diào)用json.dumps時需要指定cls參數(shù)為ComplexEncoder
例如:
json.dumps({'now':now}, cls=ComplexEncoder)
總結(jié)
以上就是本文關(guān)于python使用json序列化datetime類型實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
- Python之?dāng)?shù)據(jù)序列化(json、pickle、shelve)詳解
- Python3.5 Json與pickle實現(xiàn)數(shù)據(jù)序列化與反序列化操作示例
- 詳解Python之?dāng)?shù)據(jù)序列化(json、pickle、shelve)
- 利用Python實現(xiàn)Json序列化庫的方法步驟
- Python 之 Json序列化嵌套類方式
- Python 將json序列化后的字符串轉(zhuǎn)換成字典(推薦)
- Python Json序列化與反序列化的示例
- Python實現(xiàn)JSON反序列化類對象的示例
- Python序列化基礎(chǔ)知識(json/pickle)
- Python如何把不同類型數(shù)據(jù)的json序列化
相關(guān)文章
基于OpenCV(python)的實現(xiàn)文本分割之垂直投影法
本文主要介紹了基于OpenCV(python)的實現(xiàn)文本分割之垂直投影法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆實例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆,結(jié)合實例形式分析了Python完全樹定義及堆排序功能實現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2017-12-12面向新手解析python Beautiful Soup基本用法
這篇文章主要介紹了面向新手解析python Beautiful Soup基本用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07Python函數(shù)式編程指南(二):從函數(shù)開始
這篇文章主要介紹了Python函數(shù)式編程指南(二):從函數(shù)開始,本文講解了定義一個函數(shù)、使用函數(shù)賦值、閉包、作為參數(shù)等內(nèi)容,需要的朋友可以參考下2015-06-06Python使用CuPy模塊實現(xiàn)高效數(shù)值計算
CuPy是一個基于Python的GPU加速計算庫,它提供了與NumPy相似的接口,可以在GPU上進(jìn)行高效的數(shù)值計算,本文主要介紹一下CuPy的應(yīng)用場景,并給出一些Python代碼案例,需要的可以參考下2024-02-02pandas索引與賦值操作、排序以及Series排序和DataFrame排序方式
這篇文章主要介紹了pandas索引與賦值操作、排序以及Series排序和DataFrame排序方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09