将列表序列化为JSON
我正在客户端和Django服务器之间传递信息,想用JSON格式来实现这个功能。我发送的信息很简单,就是一个字符串的列表。我试着使用了django.core.serializers
,但是得到了
AttributeError: 'str' object has no attribute '_meta'
看起来这个只能用来处理Django对象。那么,我该如何把简单的Python对象转换成可以发送的格式呢?
3 个回答
3
是的,但那你该怎么处理django对象呢?简单的json格式通常处理不了这些对象。
如果这些对象是单独的模型对象(不是查询集,比如),我有时会存储模型对象的类型和主键,像这样:
seralized_dict = simplejson.dumps(my_dict,
default=lambda a: "[%s,%s]" % (str(type(a)), a.pk)
)
要把它们还原成对象,你可以用model.objects.get()来重建引用的对象。如果你想知道字典存储时对象的详细信息,这个方法就没什么帮助,但如果你只需要知道涉及的是哪个对象,那这个方法就很有效。
7
如果你在使用Python 2.5版本,可能需要导入 simplejson
这个库:
try:
import json
except ImportError:
import simplejson as json
105
你可以使用纯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]]'