Home > General > Serializar a JSON en Python

Serializar a JSON en Python

junio 3, 2011

Un truquillo de esos que ahorran mucho tiempo: Para serializar a JSON sin utilizar librerías externas simplemente es cuestión de crear un diccionario, convertirlo en string y reemplazar comillas simples por comillas dobles:

>>> print unicode({ 'foo': 'hello', 'bar': [4, 8, 15, 16, 23, 42] }).replace("'", '"')
{"foo": "hello", "bar": [4, 8, 15, 16, 23, 42]}

El resultado es un string JSON válido y se puede convertir en un objeto JavaScript con jQuery.parseJSON(str). Este truco maneja perfectamente cadenas unicode o con comillas.

El único problema es al serializar un objeto que pueda contener None (El null de Python) en sus propiedades. En este caso es necesario definir antes el siguiente objeto:

class NullType:
	def __repr__(self):
		return 'null'
null = NullType()

Y al serializar usarlo así:

>>> print unicode({ 'date_of_birth': user.date_of_birth or null }).replace("'", '"')
{"date_of_birth": null}

Funciona muy bien cuando hay que regresar una respuesta rápida por Ajax. Si es algo más complicado les recomiendo usar SimpleJSON que ya viene incluido en Django o para modelos usar la serialización de Django

Categories: General Tags: , , ,