web-dev-qa-db-fra.com

Liste de sérialisation en JSON

J'envoie des informations entre le client et le serveur Django, et j'aimerais utiliser JSON pour cela. J'envoie des informations simples - liste de chaînes. J'ai essayé d'utiliser Django.core.serializers, mais quand je l'ai fait, j'ai

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

Il semble que cela ne peut être utilisé que pour les objets Django. Comment puis-je sérialiser des objets simples, Python?

43
gruszczy

Vous pouvez utiliser pur Python pour le faire:

import json
list = [1, 2, (3, 4)] # Note that the 3rd element is a Tuple (3, 4)
json.dumps(list) # '[1, 2, [3, 4]]'
83
Emil Ivanov

Si vous utilisez Python 2.5, vous devrez peut-être importer simplejson:

try:
    import json
except ImportError:
    import simplejson as json
7
reech

Oui, mais que faites-vous à propos des objets Django? Json simple a tendance à s'étouffer avec eux.

Si les objets sont des objets de modèle individuels (pas des ensembles de requêtes, par exemple), j'ai parfois stocké le type d'objet de modèle et le pk, comme ceci:

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

pour désérialiser, vous pouvez reconstruire l'objet référencé avec model.objects.get (). Cela n'aide pas si vous êtes intéressé par les détails de l'objet selon le type de stockage du dict, mais c'est efficace si tout ce que vous devez savoir est quel objet était impliqué.

3
adobelis