python使用json序列化datetime類型實(shí)例解析
使用python的json模塊序列化時(shí)間或者其他不支持的類型時(shí)會(huì)拋異常,例如下面的代碼:
# -*- coding: cp936 -*- from datetime import datetime import json if __name__=='__main__': now = datetime.now() json.dumps({'now':now})
運(yùn)行會(huì)出現(xiàn)下面的錯(cuò)誤信息:
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時(shí)需要指定cls參數(shù)為ComplexEncoder
例如:
json.dumps({'now':now}, cls=ComplexEncoder)
總結(jié)
以上就是本文關(guān)于python使用json序列化datetime類型實(shí)例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
- Python之?dāng)?shù)據(jù)序列化(json、pickle、shelve)詳解
- Python3.5 Json與pickle實(shí)現(xiàn)數(shù)據(jù)序列化與反序列化操作示例
- 詳解Python之?dāng)?shù)據(jù)序列化(json、pickle、shelve)
- 利用Python實(shí)現(xiàn)Json序列化庫的方法步驟
- Python 之 Json序列化嵌套類方式
- Python 將json序列化后的字符串轉(zhuǎn)換成字典(推薦)
- Python Json序列化與反序列化的示例
- Python實(shí)現(xiàn)JSON反序列化類對象的示例
- Python序列化基礎(chǔ)知識(json/pickle)
- Python如何把不同類型數(shù)據(jù)的json序列化
相關(guān)文章
Python日期時(shí)間對象轉(zhuǎn)換為字符串的實(shí)例
今天小編就為大家分享一篇Python日期時(shí)間對象轉(zhuǎn)換為字符串的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06基于OpenCV(python)的實(shí)現(xiàn)文本分割之垂直投影法
本文主要介紹了基于OpenCV(python)的實(shí)現(xiàn)文本分割之垂直投影法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆實(shí)例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆,結(jié)合實(shí)例形式分析了Python完全樹定義及堆排序功能實(shí)現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2017-12-12面向新手解析python Beautiful Soup基本用法
這篇文章主要介紹了面向新手解析python Beautiful Soup基本用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07如何使用python獲取現(xiàn)在的日期與時(shí)間
學(xué)習(xí)了一段時(shí)間的python,不知道大家對于代碼的編寫有了屬于自己的一套思路了呢,下面這篇文章主要給大家介紹了關(guān)于如何使用python獲取現(xiàn)在的日期與時(shí)間的相關(guān)資料,需要的朋友可以參考下2022-11-11Python函數(shù)式編程指南(二):從函數(shù)開始
這篇文章主要介紹了Python函數(shù)式編程指南(二):從函數(shù)開始,本文講解了定義一個(gè)函數(shù)、使用函數(shù)賦值、閉包、作為參數(shù)等內(nèi)容,需要的朋友可以參考下2015-06-06Python使用CuPy模塊實(shí)現(xiàn)高效數(shù)值計(jì)算
CuPy是一個(gè)基于Python的GPU加速計(jì)算庫,它提供了與NumPy相似的接口,可以在GPU上進(jìn)行高效的數(shù)值計(jì)算,本文主要介紹一下CuPy的應(yīng)用場景,并給出一些Python代碼案例,需要的可以參考下2024-02-02pandas索引與賦值操作、排序以及Series排序和DataFrame排序方式
這篇文章主要介紹了pandas索引與賦值操作、排序以及Series排序和DataFrame排序方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09