Подтвердить что ты не робот

Сериализованный список для JSON

Я отправляю информацию между клиентом и сервером Django, и я хотел бы использовать JSON для этого. Я отправляю простую информацию - список строк. Я попытался использовать django.core.serializers, но когда я это сделал, я получил

AttributeError: 'str' object has no attribute '_meta'

Кажется, это можно использовать только для объектов Django. Как я могу сериализовать простые объекты Python?

4b9b3361

Ответ 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]]'

Ответ 2

Если вы используете Python 2.5, вам может потребоваться импортировать simplejson:

try:
    import json
except ImportError:
    import simplejson as json

Ответ 3

Да, но тогда что вы делаете с объектами django? простой json имеет тенденцию задушить их.

Если объекты являются отдельными объектами модели (а не запросами, например), я иногда сохранял тип объекта модели и pk, например:

seralized_dict = simplejson.dumps(my_dict, 
                     default=lambda a: "[%s,%s]" % (str(type(a)), a.pk)
                     )

для де-сериализации, вы можете восстановить объект, на который ссылается model.objects.get(). Это не поможет, если вы заинтересованы в деталях объекта в типе, который хранится в dict, но он эффективен, если все, что вам нужно знать, - это какой объект был задействован.