Code

Ticket #3324: 3324_Decimal_is_not_JSON_serializable.diff

File 3324_Decimal_is_not_JSON_serializable.diff, 776 bytes (added by eric@…, 7 years ago)
Line 
1Index: django/utils/simplejson/encoder.py
2===================================================================
3--- django/utils/simplejson/encoder.py  (revision 4463)
4+++ django/utils/simplejson/encoder.py  (working copy)
5@@ -2,6 +2,7 @@
6 Implementation of JSONEncoder
7 """
8 import re
9+from decimal import Decimal
10 
11 ESCAPE = re.compile(r'[\x00-\x19\\"\b\f\n\r\t]')
12 ESCAPE_ASCII = re.compile(r'([\\"/]|[^\ -~])')
13@@ -256,7 +257,7 @@
14             yield 'false'
15         elif isinstance(o, (int, long)):
16             yield str(o)
17-        elif isinstance(o, float):
18+        elif isinstance(o, float) or isinstance(o, Decimal):
19             yield floatstr(o, self.allow_nan)
20         elif isinstance(o, (list, tuple)):
21             for chunk in self._iterencode_list(o, markers):