Python bytearray不可JSON序列化

Python bytearray不可JSON序列化,python,json,django,serialization,Python,Json,Django,Serialization,我在Python/Django中得到这个错误消息:bytearray(b'')不是JSON可序列化的。目前,我是这样做的: ... from django.core.serializers.json import DjangoJSONEncoder ... output = json.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(output) 我导入了djangojsonecoder,因为在此之前我对datetime有问题。这

我在
Python/Django
中得到这个错误消息:
bytearray(b'')不是JSON可序列化的。目前,我是这样做的:

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

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

我导入了
djangojsonecoder
,因为在此之前我对
datetime
有问题。这个问题消失了,但现在我在类型
bytearray
上遇到了另一个问题。因此,我很想知道,无论您使用何种数据类型,是否有一种创建json字符串的标准和通用方法。

正如@Martijn Pieters在其评论中所建议的,json编码器不知道如何将字节数组转换为相应的json符号

检查json理解的数据类型。DjangoJSONEncoder使用相同的子集,理解django查询集


问题的解决方案可能是实现for bytearray,并在UI中正确处理响应。

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

但是,请记住在使用cPickle之前发出的警告:

警告:pickle模块不用于防止错误或恶意构造的数据。决不要取消从不受信任或未经验证的来源接收的数据


不,当然没有。如果不事先知道数据类型的模型,您将如何序列化任意数据类型?作为一名程序员,您了解
bytearray
所代表的内容并不意味着JSON编码器会知道。特别是对于bytearray,是否将其序列化为字符串或列表(没有那么多类型可供选择)甚至不明显。我检查了数据库中的表,发现,这是因为一个
类型的字段只取0或1的值。因此,在Python/Django中无法处理这样一个标准且“简单”的类型是相当奇怪的,这肯定不是Python的限制!JSON是由设计设置的受限类型(用于互操作性和安全性);不要将它与一般的序列化(如酸洗)混淆。@Jacobian:为什么这令人惊讶?仅仅因为存在一个可能的映射并不意味着它在所有用例中都是正确的映射。只映射0和1的字节数组可以映射到布尔值列表、字符串或整数列表,所有3个都可以用JSON表示信息。但是如果这些字节代表字符呢?还是小整数?请允许我引用pickle文档顶部的红色大框:“警告:pickle模块不打算对错误或恶意构造的数据进行安全保护。永远不要解除从不受信任或未经验证的来源接收的pickle数据。”@Yann Vernier。这是很重要的一点。幸运的是,在我的项目中,我将处理一个受信任的数据库