两种方法Python将日期时间DateTime序列化为JSON
作者:admin 时间:2021-12-31 9:24:32 浏览:在本文中,我们将看到如何将日期时间 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
- 站长推荐