📅  最后修改于: 2023-12-03 15:35:23.905000             🧑  作者: Mango
在使用JSON进行数据传输时,可能会遇到类似于“TypeError: 日期类型的对象不是 JSON 可序列化的”的错误。这是因为JSON不支持将日期类型转换为字符串,JSON只支持以下数据类型:
所以,在JSON序列化时,我们需要手动将日期类型转换为字符串类型,例如使用Date对象的toJSON()方法:
import json
import datetime
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, (datetime.date, datetime.datetime)):
return obj.strftime('%Y-%m-%d %H:%M:%S')
return json.JSONEncoder.default(self, obj)
data = {
"name": "John",
"age": 30,
"date_of_birth": datetime.date(1991, 1, 1)
}
json.dumps(data, cls=CustomEncoder)
在上述代码中,我们自定义了一个json的编码器,当遇到日期类型时会自动调用我们定义的default方法,将日期类型转换为字符串类型。
此外,我们还可以通过在json.dumps()函数中传入参数,使其自动转换日期类型为字符串类型:
import json
import datetime
data = {
"name": "John",
"age": 30,
"date_of_birth": datetime.date(1991, 1, 1)
}
json.dumps(data, default=str)
在上述代码中,我们将default参数设置为str,即对所有非字符串类型的数据都进行强制类型转换为字符串。