【问题标题】:Setting global JsonEncoder in Python在 Python 中设置全局 JsonEncoder
【发布时间】:2020-02-11 13:48:39
【问题描述】:

基本上,我正在解决 Python 的默认 json 编码器不支持 datetime 的古老问题。但是,我可以找到调用 json.dumps 并在每次调用时手动传递“正确”编码器的所有解决方案。老实说,这不是最好的方法。特别是如果你想使用像jsonify 这样的包装器来正确设置你的响应对象,你甚至不能指定这些参数。

所以:长话短说:如何将 Python 的 JSON 实现中的全局默认编码器覆盖为自定义编码器,这实际上确实支持我想要的功能?

编辑:好的,所以我想出了如何针对我的特定用例(在 Flask 内部)执行此操作。你可以在那里做app.json_encoder = MyCustomJSONEncoder。然而如何在烧瓶之外做到这一点仍然是一个有趣的问题。

【问题讨论】:

    标签: python


    【解决方案1】:

    很遗憾,我找不到为 json 模块设置默认编码器或解码器的方法。

    所以最好的方法是做flask所做的事情,即将对dumpdumps的调用包装起来,并在该包装器中提供一个默认值。

    【讨论】:

    • 我已经对 json 模块进行了一些研究,您可以覆盖内部的 _defaultEncoder(或者它的调用方式,现在不在我的工作 PC 上),但这非常令人畏惧。
    • @FrankyBoy:我尽可能避免使用未记录的功能,因为它们可能会在未来的 Python 版本中更改,恕不另行通知。有时我必须这样做,但随后我会尽可能多地在我的代码中记录它......
    • 正是这个想法让我吐在嘴里。这就是为什么我一直在寻找合适的解决方案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2013-08-16
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多