字定义JSON序列化支持datetime格式序列化

Posted 叨客厨子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字定义JSON序列化支持datetime格式序列化相关的知识,希望对你有一定的参考价值。

字定义JSON序列化支持datetime格式序列化

由于json.dumps无法处理datetime日期,所以可以通过自定义处理器来做扩展,如:

import json
from datetime import date
from datetime import datetime


class CustomEncoder(json.JSONEncoder):
    def default(self, field):
        # 自定义部分
        # return 定义的strftime
        if isinstance(field, datetime):
            return field.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(field, date):
            return field.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, field)


if __name__ == '__main__':

    dic = {
        'k1': 'v1',
        'k2': 123,
        'ctime': datetime.now()
    }

    # 调用方法 json.dumps(dic变量, cls=CustomEncoder)
    ds = json.dumps(dic, cls=CustomEncoder)
    print(ds)

输出:

{"k1": "v1", "k2": 123, "ctime": "2018-01-04 14:53:13"}

以上是关于字定义JSON序列化支持datetime格式序列化的主要内容,如果未能解决你的问题,请参考以下文章

json序列化时定制支持datetime类型,和到中文让他保留中文形式

Python—使用Json序列化Datetime类型

Python json.dumps 特殊数据类型的自定义序列化操作

如何使用 ISO 8601 格式的 DateTime 字段将 JSON 文本反序列化为 BsonDocument?

Newtonsoft.Json序列化DateTime类型数据

NewtonJson DateTime 格式序列化