Encoding NaN in JSON
Johann Hibschman
jhibschman at gmail.com
Wed Apr 17 15:05:30 EDT 2013
Miki Tebeka <miki.tebeka at gmail.com> writes:
>>> I'm trying to find a way to have json emit float('NaN') as 'N/A'.
>> No. There is no way to represent NaN in JSON. It's simply not part of the
>> specification.
> I know that. I'm trying to emit the *string* 'N/A' for every NaN.
Easiest way is probably to transform your object before you try to write
it, e.g.
def transform(x):
if isinstance(x, dict):
return dict((k, transform(v)) for k, v in x.items())
elif isinstance(x, list) or isinstance(x, tuple):
return [transform(v) for v in x]
elif isinstance(x, float) and x != x:
return 'N/A'
else:
return x
Then just use
json.dumps(transform(x))
rather than just
json.dumps(x)
More information about the Python-list
mailing list