python - datetime.date(2014, 4, 25) 在 Django 中不是 JSON 可序列化的

标签 python json django datetime serialization

编辑

此问题与 How to overcome "datetime.datetime not JSON serializable"? 不重复 因为,虽然这是同一个问题,但它提供了一个特定的上下文:Django。因此,有些解决方案适用于此处,但不适用于所提供链接的问题。


原始问题

我关注了How to overcome "datetime.datetime not JSON serializable"?但这无济于事

我试过这段代码

>>> 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

有人可以帮助我使用 datetime.date 序列化器和反序列化器吗?

最佳答案

你也可以这样做:

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

print json.dumps(data, default=date_handler)

来自 here .

更新根据 J.F.Sebastian 评论

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

print json.dumps(data, default=date_handler)

关于python - datetime.date(2014, 4, 25) 在 Django 中不是 JSON 可序列化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23285558/

相关文章:

python - 如何使用函数字段的存储参数?

javascript - 将 HTML 负载解析为 JSON

django - 使用 Django 从 CDN 和本地目录提供静态文件

javascript - 在 AngularJS 中显示 JSON 数组中的键值

django - Docker 连接拒绝挂起 Django

python - django mongoengine 与 mongoengine 之间的区别

python - Mac OS 上未显示菜单项

Python - 迭代并提取字典类型列表的元素

python - Twitter API - Python - 150 个请求/小时,即使在经过身份验证后

javascript - 将 javascript 对象转换为 ruby​​ 哈希值