我正在客户端和Django服务器之间发送信息,并且我想要使用JSON来传输数据。我正在发送简单的信息-字符串列表。我尝试使用django.core.serializers
,但是当我这样做时,出现了问题。
AttributeError: 'str' object has no attribute '_meta'
看起来这只能用于Django对象。那么我该如何序列化简单的Python对象呢?
我正在客户端和Django服务器之间发送信息,并且我想要使用JSON来传输数据。我正在发送简单的信息-字符串列表。我尝试使用django.core.serializers
,但是当我这样做时,出现了问题。
AttributeError: 'str' object has no attribute '_meta'
看起来这只能用于Django对象。那么我该如何序列化简单的Python对象呢?
import json
list = [1, 2, (3, 4)] # Note that the 3rd element is a tuple (3, 4)
json.dumps(list) # '[1, 2, [3, 4]]'
如果使用Python 2.5,你可能需要导入simplejson
:
try:
import json
except ImportError:
import simplejson as json
是的,但那么你该怎么处理Django对象呢?简单的JSON往往无法处理它们。
如果这些对象是单独的模型对象(不是查询集,例如),我偶尔会存储模型对象类型和主键,如下所示:
seralized_dict = simplejson.dumps(my_dict,
default=lambda a: "[%s,%s]" % (str(type(a)), a.pk)
)
要进行反序列化,您可以使用model.objects.get()重构引用的对象。如果您有兴趣了解存储在字典中的对象细节,则此方法无法帮助,但是如果您只需要知道所涉及的对象是哪个,则该方法很有效。