sending NaN in json
NaN is not a valid JSON symbol, see the spec at http://json.org/
Your encoder should probably have encoded the NaN as null
instead.
json.dumps
has an allow_nan
parameter, which defaults to True.
NaN, Infinity and -Infinity are not part of JSON, but they are standard in Javascript, so they're commonly used extensions. If the recipient can't handle them, set allow_nan=False
. But then you'll get ValueError when you try to serialise NaN.
The simplejson package on which Python's standard json package is based moves more quickly, and handles this situation. NaN
is not valid JSON, and the ignore_nan
flag will handle correctly all NaN
to null
conversions.
import simplejson as json
json.dumps(thing, ignore_nan=True)
The default
parameter will allow simplejson to parse your datetimes correctly.
json.dumps(response, ignore_nan=True, default=datetime.datetime.isoformat)
simplejson can be installed with pip.
pip install simplejson