I'm pulling a sum from a DB which is a decimal value. I'm trying to use that value in a JSON result
json.dumps( { 'sum': amount } ) #where amount is my Decimal
Django can't serialize the Decimal
.
I can convert it to a string, but I'd like a numeric type within the JSON.
If I try and convert it to a float
I end up with more than 2 decimal places.
What needs to happen, if possible, to get a result like the following?
{ 'sum': 500.50 }
What you can do is extend the JSONDecoder class to provide a custom serializer for the Decimal type, similar to the example in this document: 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)
...
That's a nonworking example of how to do it, hopefully a good starting point for you.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With