2014-09-04 78 views
2

目前正在使用python中的快速小項目,並試圖將對象編碼爲JSON字符串。除了現在之外,我已經做了幾次這個,沒有任何問題。通常我只是做以下事情。將JSON序列化爲datetime.datetime對象

def ClassToEncode : 
    def __init__(self, arg1, arg2, ..., argn) : 
     self.attr1 = arg1 
     self.attr2 = arg2 
     ... 
     self.attrn = argn 

    ... 
    def toJSON(self) : 
     return json.dumps(self, default=lambda o: o.__dict__) 

但問題是,我班的一個屬性是一個datetime.datetime對象,我被拋出以下錯誤

AttributeError: 'datetime.datetime' object has no attribute '__dict__' 

任何想法或的wraparounds,可以使包括的功能datetime屬性放入JSON輸出?

在此先感謝!

回答

2

您可以使用日期時間對象上的isoformat()方法將其轉換爲ISO-8601格式的時間字符串,然後將其序列化爲JSON。在另一端,則調用格式化字符串datetime.datetime.strptime()將其轉換回datetime對象:

>>> from datetime import datetime as dt 
>>> now = dt.now() 
>>> now 
datetime.datetime(2014, 9, 4, 3, 19, 44, 214096) 
>>> isonow = now.isoformat() 
>>> isonow 
'2014-09-04T03:19:44.214096' 
>>> format = "%Y-%m-%dT%H:%M:%S.%f" 
>>> newtime = dt.strptime(isonow, format) 
>>> newtime 
datetime.datetime(2014, 9, 4, 3, 19, 44, 214096) 
+0

太好了!這正是我需要的。 – FinnM 2014-09-04 07:39:41