Login

JSON Decimal encoder

Author:
roxeteer
Posted:
April 12, 2011
Language:
Python
Version:
Not specified
Tags:
json decimal encoder
Score:
1 (after 1 ratings)

Python json module or simplejson don't support Decimals out of the box. Here's an encoder that casts Decimals into floats and then displays them in desired format.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import json
from decimal import Decimal

class DecimalEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Decimal):
            return float(obj)
        return json.JSONEncoder.default(self, obj)

# Output has one decimal, change format if you need more
json.encoder.FLOAT_REPR = lambda o: format(o, '.1f')

# Usage:
d = Decimal("42.5")
json.dumps(d, cls=DecimalEncoder)

More like this

  1. "Magic Link" Management Command by webology 3 weeks, 5 days ago
  2. Closest ORM models to a latitude/longitude point by simonw 3 weeks, 5 days ago
  3. Log the time taken to execute each DB query by kennyx46 3 weeks, 5 days ago
  4. django database snippet by ItsRLuo 1 month ago
  5. Serialize a model instance by chriswedgwood 2 months ago

Comments

Please login first before commenting.