json.dumps()
を使用してPythonのJSON文字列にfloatとNaN
を含む配列をエンコードしようとしています。jsonのNaNを送信
しかし、エンコードされたJSON文字列はPHPで正常にデコードされていません。 NaN
でこの問題が発生していますか?この状況を回避するにはどうすればよいですか?
json.dumps()
を使用してPythonのJSON文字列にfloatとNaN
を含む配列をエンコードしようとしています。jsonのNaNを送信
しかし、エンコードされたJSON文字列はPHPで正常にデコードされていません。 NaN
でこの問題が発生していますか?この状況を回避するにはどうすればよいですか?
json.dumps
のパラメータはallow_nan
です。デフォルトはTrueです。
NaN、Infinityおよび-InfinityはJSONの一部ではありませんが、Javascriptの標準であるため、よく使用される拡張機能です。受信者が処理できない場合は、allow_nan=False
と設定します。しかし、NaNをシリアライズしようとするとValueErrorが返されます。
NaNはhttp://json.org/
で仕様を参照してくださいあなたのエンコーダは、おそらく代わりにnull
としてはNaNをコード化している必要があり、有効なJSON記号ではありません。
てみ使用してのsimplejson:コード内で次に
pip install simplejson
:
import simplejson
response = df.to_dict('records')
simplejson.dumps(response, ignore_nan=True,default=datetime.datetime.isoformat)
ignore_nanフラグが正しく、すべてのNaNを処理する - >ヌル変換
がデフォルトフラグができるようになりますのsimplejsonあなたのdatetimesを正しく解析する。
出力されるJSONの外観は何ですか? NaNはPythonのネイティブデータ型ではありませんので、私はそれがまったく動作するのに驚いています。 –
@Daniel:実際には、 'float(" nan ")'を実行すれば、それを得ることができます。 'json.dumps(float(" nan "))'を呼び出すと、 "NaN"が返されます。 –