O módulo json do Python nem sempre produz JSON válido

Arquive isso em “bom saber”. Especialmente se você estiver fazendo cálculos numéricos e colocando-os em arquivos json.

Considere o seguinte arquivo testjson.py:

import json 
d
= {
'a': float('inf'),
'b': float('-inf'),
'c': float('nan')
}
print d['a'], d['b'], d['c']
print json.dumps(d)

python testjson.py

inf -inf nan 
{"a": Infinity, "c": NaN, "b": -Infinity}

O problema aqui é que Infinity, -Infinity e NaN não são valores JSON válidos. O próprio módulo json do Python irá analisá-los bem, mas se você não tiver certeza de que seus arquivos JSON serão manipulados com Python, cuidado, os aplicativos cliente provavelmente não ficarão satisfeitos com esses valores.