python/tornad中的自定义json编码器

2024-05-16 10:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在建造龙卷风(实际上是旋风),而且请求处理程序.write被我的东西噎住了。如何为龙卷风中的这些对象编写JSONencoder?在

一个复杂的问题是:有些对象是从外部库借来的,所以我不能真正访问它们的构造函数。在

很抱歉没有发布代码--我只是不知道如何从这里开始。在


Tags: 对象代码处理程序write旋风jsonencoder
3条回答

基本上,答案是tornado不支持自定义json格式,因此必须使用json库。下面是我最后使用的代码:

import json

class MongoEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, ObjectId):
            return str(obj)
        return json.JSONEncoder.default(self, obj)

print json.dumps(my_mong_obj, cls=MongoEncoder, indent=2)

是的,您可以通过在主循环之前添加此代码来更改默认编码器

import json
json._default_encoder = YourJSONEncoder() #patch json

对于带有json格式的datetime对象,它看起来像这样

    import json

    dthandler = lambda obj: obj.isoformat() if isinstance(obj, datetime) else None
    response = json.dumps(data, ensure_ascii=False, default=dthandler)

相关问题 更多 >