datetime.date(2014,4,25)在Django中不是JSON序列化 [英] datetime.date(2014, 4, 25) is not JSON serializable in Django

查看:74
本文介绍了datetime.date(2014,4,25)在Django中不是JSON序列化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遵循如何克服datetime。 datetime不是JSON可序列化在python?,但这没有帮助



我尝试过这个代码

 code>>>> import datetime 
>>>> a = datetime.date(2014,4,25)
>>>>从bson import json_util
>>> b = json.dumps(a,default = json_util.default)
追溯(最近的最后一次调用):
文件< console>,第1行,< module>
文件/usr/lib/python2.7/json/__init__.py,第250行,转储
sort_keys = sort_keys,** kw).encode(obj)
文件 /usr/lib/python2.7/json/encoder.py,第207行,编码
chunks = self.iterencode(o,_one_shot = True)
文件/ usr / lib / python2 7 / json / encoder.py,第270行,iterencode
返回_iterencode(o,0)
文件/home/.../python2.7/site-packages/bson/json_util。 py,第256行,默认
raise TypeError(%r不是JSON可序列化%obj)
TypeError:datetime.date(2014,4,25)不是JSON可序列化
有人可以帮我一个 datetime.date serializer和deserializer

解决方案

您也可以这样做:

如果hasattr(obj,'isoformat')else obj 

print json.dumps(data,default = date_handler)

这里



根据JFSebastian评论更新

  def date_handler(obj):
如果hasattr(obj, isoformat'):
return obj.isoformat()
else:
raise TypeError

print json.dumps(data,default = date_handler)


I followed How to overcome "datetime.datetime not JSON serializable" in python? but this is not helping

I tried this code

>>> import datetime
>>> a =datetime.date(2014, 4, 25)
>>> from bson import json_util
>>> b = json.dumps(a,default = json_util.default)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 250, in dumps
    sort_keys=sort_keys, **kw).encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "/home/.../python2.7/site-packages/bson/json_util.py", line 256, in default
    raise TypeError("%r is not JSON serializable" % obj)
TypeError: datetime.date(2014, 4, 25) is not JSON serializable

Can somebody help me with a datetime.date serializer and deserializer.

解决方案

You can also do this:

def date_handler(obj):
    return obj.isoformat() if hasattr(obj, 'isoformat') else obj

print json.dumps(data, default=date_handler)

From here.

Update as per J.F.Sebastian comment

def date_handler(obj):
    if hasattr(obj, 'isoformat'):
        return obj.isoformat()
    else:
        raise TypeError

print json.dumps(data, default=date_handler)

这篇关于datetime.date(2014,4,25)在Django中不是JSON序列化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆