当我试图返回包含datetime
值的JSON时,我得到了
File "/usr/lib/python2.7/json/encoder.py", line 178, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: datetime.datetime(2014, 2, 1, 0, 0) is not JSON serializable
有没有一种简单的方法可以向bottle
添加一个对象钩子,比如
from bson import json_util
import json
json.dumps(anObject, default=json_util.default)
转换datetime
值?
2条答案
按热度按时间20jt8wwn1#
有趣的问题!我可以看到几种方法来做到这一点。其中一种是编写一个自定义插件来 Package
JSONPlugin
:然后可以像这样使用:
并将给予如下输出:
另一种更短的方法是在示例化JSONPlugin类时简单地指定
json_loads
参数:这会产生相同的结果。
后台
当您查看source code for bottle时,这一切都更有意义(为了简洁起见,下面删除了一些部分):
我们需要做的就是确保对
dumps
的调用接收到您希望提供的default
关键字参数。8gsdolmq2#
一些简短的补充:
1.如果您只喜欢使用标准库,则可以执行以下操作:
1.如果您需要更复杂的
datetime
表示:1.最后,如果你喜欢简洁:由于JSON插件被插入到默认的Bottle示例中,因此您可以执行以下操作: