5

我正在使用 Django json 库对从 Django 游标获取的数据进行编码,但是我看到反序列化后的日期时间现在是 unicode 类型。简单的例子:

import datetime
from django.core.serializers.json import json, DjangoJSONEncoder


today = datetime.datetime.now()
encoded = json.dumps(today, cls=DjangoJSONEncoder)
type(json.loads(encoded))
>> unicode

如果我没记错的话,应该尊重变量类型。然后我想也许有类似 DjangoJSONDecoder 的东西,但什么都没有。我究竟做错了什么?这是预期的行为吗?

4

2 回答 2

7

它不能像你认为的那样工作。关键是 JSON 没有日期/时间的本机类型,这就是 Django 序列化程序将日期时间转换为字符串的原因。但是,当然,一旦它们是字符串,那么它们就是字符串;反序列化器无法知道它们曾经是日期时间。如果愿意,您可以编写一个进一步的自定义反序列化程序,尝试调用strptime每个字符串,看看它是否“应该”是一个日期时间;但是开销会很大,并且(取决于您的数据)可能会出现误报。

于 2013-04-17T08:12:53.667 回答
0

您没有为json.loads( clskwarg)指定自定义解码器类

于 2013-04-17T07:56:06.797 回答