[英]How to deserialize the datetime in a json object in python?
My original dictionary is 我原来的字典是
A = {
'date': datetime.date(2013, 1, 1),
'price': 100
}
Since datetime.date
is not serializable, I add a default function to deal with that: 由于
datetime.date
不可序列化,我添加了一个默认函数来处理:
B = json.dumps(A, default=lambda obj:obj.isoformat() if hasattr(obj, 'isoformat') else obj)
My question is, how can I deserialize the 'date'
field while I use json.loads
to convert it back to the original dictionary? 我的问题是,当我使用
json.loads
将其转换回原始字典时,如何反序列化'date'
字段?
from datetime import datetime
def load_with_datetime(pairs, format='%Y-%m-%d'):
"""Load with dates"""
d = {}
for k, v in pairs:
if isinstance(v, basestring):
try:
d[k] = datetime.strptime(v, format).date()
except ValueError:
d[k] = v
else:
d[k] = v
return d
dump = json.dumps(A, default = f)
json.loads(dump, object_pairs_hook=load_with_datetime)
# {u'date': datetime.date(2013, 1, 1), u'price': 100}
continue to your example code, 继续你的示例代码,
C = json.loads(B)
C['date'] = datetime.datetime.strptime(C['date'], '%Y-%m-%d')
print C
# {u'date': datetime.datetime(2013, 1, 1, 0, 0), u'price': 100}
Use pickle module 使用泡菜模块
import pickle
fileop = open("timeformat.txt","wb")
pickle.dump(A,fileop)
fileop.close()
print pickle.load(open("timeformat.txt","rb"))
print A['Date']
>>>{'date': datetime.date(2013, 1, 1), 'price': 100}
>>>2013-01-01
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.