python - serializers - Lista de serialización a JSON
is not json serializable (3)
Estoy enviando información entre el cliente y el servidor de Django, y me gustaría usar JSON para esto. Estoy enviando información simple - lista de cadenas. Intenté usar django.core.serializers
, pero cuando lo hice, obtuve
AttributeError: ''str'' object has no attribute ''_meta''
Parece que esto se puede usar solo para objetos de Django. ¿Cómo puedo serializar objetos simples de Python?
Puedes usar Python puro para hacerlo:
import json
list = [1, 2, (3, 4)] # Note that the 3rd element is a tuple (3, 4)
json.dumps(list) # ''[1, 2, [3, 4]]''
Sí, pero ¿qué haces con los objetos django? JSON simple tiende a ahogarse con ellos.
Si los objetos son objetos individuales del modelo (no conjuntos de consultas, por ejemplo), ocasionalmente he almacenado el tipo de objeto modelo y el pk, así:
seralized_dict = simplejson.dumps(my_dict,
default=lambda a: "[%s,%s]" % (str(type(a)), a.pk)
)
para deserializar, puede reconstruir el objeto al que se hace referencia con model.objects.get (). Esto no ayuda si está interesado en los detalles del objeto en el tipo en que se almacena el dict, pero es eficaz si todo lo que necesita saber es qué objeto estaba involucrado.
Si usa Python 2.5, puede que necesite importar simplejson
:
try:
import json
except ImportError:
import simplejson as json