Ответ 1
Вы можете использовать чистый 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]]'
Я отправляю информацию между клиентом и сервером Django, и я хотел бы использовать JSON для этого. Я отправляю простую информацию - список строк. Я попытался использовать django.core.serializers
, но когда я это сделал, я получил
AttributeError: 'str' object has no attribute '_meta'
Кажется, это можно использовать только для объектов Django. Как я могу сериализовать простые объекты Python?
Вы можете использовать чистый 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 имеет тенденцию задушить их.
Если объекты являются отдельными объектами модели (а не запросами, например), я иногда сохранял тип объекта модели и pk, например:
seralized_dict = simplejson.dumps(my_dict,
default=lambda a: "[%s,%s]" % (str(type(a)), a.pk)
)
для де-сериализации, вы можете восстановить объект, на который ссылается model.objects.get(). Это не поможет, если вы заинтересованы в деталях объекта в типе, который хранится в dict, но он эффективен, если все, что вам нужно знать, - это какой объект был задействован.