sending NaN in json
Solution 1:
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.
Solution 2:
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
Solution 3:
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.