技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

两种方法Python将日期时间DateTime序列化为JSON

作者:admin    时间:2021-12-31 9:24:32    浏览:

在本文中,我们将看到如何将日期时间 DateTime 实例序列化为 JSON。有多种方法可以实现这一点,你可以选择你认为对你的问题更有用的方式。

如何将 Python Datetime 序列化为 JSON
解释了如何将 Python Datetime 序列化为 JSON

子类 JSONEncoder 将 DateTime 序列化为 JSON

Python json 模块提供了一个json.JSONEncoder类。如果我们想要更多定制的输出,我们可以扩展它。即,要将 DateTime 实例序列化为 JSON,我们需要继承 JSONEncoder 以便我们可以实现自定义序列化。

当我们说子类json.JSONEncoder时,意味着我们需要覆盖JSONEncoder 类的default()方法,我们可以在其中将 DateTime 值转换为 ISO 格式,以便它可以序列化。ISO 格式产生一个序列化版本的datetime。

根据 ISO 8601,它以YYYY-MM-DDTHH:MM:SS易于编码和解码的格式转换 DateTime 。我们可以使用一种isoformat()方法将 DateTime 值转换为 ISO 格式。

JSON 模块的json.dump()json.dumps()方法有一个cls kwarg。使用这个参数,你可以传递一个自定义的 JSON 编码器,它告诉json.dump()json.dumps()方法如何将你的 DateTime 编码为 JSON 格式的数据。

我有一个员工dict,其中包含员工详细信息和他/她的加入日期。让我们看看如何将员工详细信息编码为 JSON。

现在,让我们看看这个例子。

import json
import datetime
from json import JSONEncoder

employee = {
    "id": 456,
    "name": "William Smith",
    "salary": 8000,
    "joindate": datetime.datetime.now()
}

# subclass JSONEncoder
class DateTimeEncoder(JSONEncoder):
        #Override the default method
        def default(self, obj):
            if isinstance(obj, (datetime.date, datetime.datetime)):
                return obj.isoformat()

print("Printing to check how it will look like")
print(DateTimeEncoder().encode(employee))

print("Encode DateTime Object into JSON using custom JSONEncoder")
employeeJSONData = json.dumps(employee, indent=4, cls=DateTimeEncoder)
print(employeeJSONData)

输出

Printing to check how it will look like
{"id": 456, "name": "William Smith", "salary": 8000, "joindate": "2020-01-08T18:52:50.637635"}
Encode DateTime Object into JSON using custom JSONEncoder
{
    "id": 456,
    "name": "William Smith",
    "salary": 8000,
    "joindate": "2020-01-08T18:52:50.637635"
}

通过将日期时间转换为字符串来序列化日期时间

你可以将dateTime value 转换为其 String 表示并直接对其进行编码,这里你不需要编写任何编码器。我们需要像这样json.dump()json.dumps() 设置str的默认参数json.dumps(obj, default=str)

让我们看看这个例子。

import json
import datetime

employee = {
    "id": 456,
    "name": "William Smith",
    "salary": 8000,
    "joindate": datetime.datetime.now()
}
print("JSON Data")
print(json.dumps(employee, default=str))

输出:

JSON Data
{"id": 456, "name": "William Smith", "salary": 8000, "joindate": "2020-01-08 18:39:30.161488"}

总结

本文通过两种方法介绍了Python将日期时间DateTime序列化为JSON,你可以选择你认为对你的问题更有用的方式。

您可能对以下文章也感兴趣

标签: Python  
x
  • 站长推荐
/* 左侧显示文章内容目录 */