FloatとNaN
を含む配列をPythonからjson.dumps()
を使用してJSON文字列にエンコードしようとしています。
しかし、エンコードされたJSON文字列はPHPで正常にデコードされていません。 NaN
がこの問題の原因ですか?この状況を回避するにはどうすればよいですか?
json.dumps
持っています allow_nan
パラメータ。デフォルトはTrueです。
NaN、Infinity、および-InfinityはJSONの一部ではありませんが、JavaScriptの標準であるため、一般的に使用される拡張機能です。受信者がそれらを処理できない場合は、allow_nan=False
。ただし、NaNをシリアル化しようとすると、ValueErrorが発生します。
NaNは有効なJSONシンボルではありません。詳細は http://json.org/ を参照してください
あなたのエンコーダはおそらくNaNをnull
としてエンコードしているはずです。
Pythonの標準jsonパッケージのベースとなっているsimplejsonパッケージは、より速く移動し、この状況を処理します。 NaN
は無効なJSONであり、ignore_nan
フラグは、NaN
からnull
へのすべての変換を正しく処理します。
import simplejson as json
json.dumps(thing, ignore_nan=True)
default
パラメーターを使用すると、simplejsonで日時を正しく解析できます。
json.dumps(response, ignore_nan=True, default=datetime.datetime.isoformat)
simplejsonはpipでインストールできます。
pip install simplejson