Files
opensearch-pyd/elasticsearch/serializer.py
T
Honza Král 95fba05e02 Fix unicode body handling.
Only body should be encoded as bytes, not anything going through the
serializer (mostly because of bulk)
2013-12-04 15:07:56 +01:00

32 lines
820 B
Python

import json
from datetime import date, datetime
from decimal import Decimal
from .exceptions import SerializationError
class JSONSerializer(object):
def default(self, data):
if isinstance(data, (date, datetime)):
return data.isoformat()
elif isinstance(data, Decimal):
return float(data)
raise TypeError
def loads(self, s):
try:
return json.loads(s)
except (ValueError, TypeError) as e:
raise SerializationError(s, e)
def dumps(self, data):
# don't serialize strings
if isinstance(data, (type(''), type(u''))):
return data
try:
return json.dumps(data, default=self.default)
except (ValueError, TypeError) as e:
raise SerializationError(data, e)