Decimal a JSON

Estoy extrayendo una sum de un DB que es un valor decimal. Estoy tratando de usar ese valor en un resultado JSON

json.dumps( { 'sum': amount } ) #where amount is my Decimal 

Django no puede serializar el Decimal . Puedo convertirlo en una cadena, pero me gustaría un tipo numérico dentro del JSON. Si bash convertirlo en un float , float más de 2 decimales.

¿Qué debe suceder, si es posible, para obtener un resultado como el siguiente?

 { 'sum': 500.50 } 

Lo que puede hacer es ampliar la clase JSONDecoder para proporcionar un serializador personalizado para el tipo decimal, similar al ejemplo en este documento: http://docs.python.org/py3k/library/json.html

 >>> import json >>> class DecimalEncoder(json.JSONEncoder): ... def default(self, obj): ... if isinstance(obj, Decimal): ... return "%.2f" % obj ... return json.JSONEncoder.default(self, obj) ... 

Ese es un ejemplo no práctico de cómo hacerlo, y espero que sea un buen punto de partida para usted.

Desde este enlace: http://code.google.com/p/simplejson/issues/detail?id=34 .

Puedo decirte que el árbol piensa:

Puedes encontrar más detalles en el primer enlace.

Se puede convertir decimal a un flotador con el que javascript sabe cómo tratar

 json.dumps( { 'sum': float(amount) } ) 

No hay tal cosa como un tipo decimal en Javascript, y también entre los tipos estándar en python. Es un tipo específico de base de datos y no forma parte de JSON. Toma Float o haz una aritmética entera.