bytearray不是JSON serializab

2024-05-15 00:07:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python/Djangobytearray(b'') is not JSON serializable中收到此错误消息。目前,我是这样做的:

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

output = json.dumps(data, cls=DjangoJSONEncoder)
return HttpResponse(output)

我导入DjangoJSONEncoder,因为在此之前,我对datetime有问题。这个问题消失了,但是现在我对类型bytearray有了另一个问题。所以,我想知道,是否有一种创建json字符串的标准和通用方法,不管您使用什么数据类型。


Tags: djangofromcorejson消息outputis错误
2条回答

正如@Martijn Pieters在他的评论中所建议的,Json编码器不知道如何将bytearray转换为相应的Json符号。

查看https://docs.python.org/2/library/json.html#encoders-and-decoders以了解json理解的数据类型。DjangoJSONEncoder使用相同的子集,理解djangoqueryset。

解决问题的方法可能是为bytearray实现一个custom encoder,并在UI中正确地处理响应。

对于json无法编码的类型,可以先使用cPickle.dumps()转换为字符串类型,然后使用json。

不过,在使用cPickle之前,请记住来自docs的警告:

Warning: The pickle module is not intended to be secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.

相关问题 更多 >

    热门问题