Python 3.6.3
における json.dumps
が、 np.isnan() == True
となるような値を nan
として出力する問題を、外部ライブラリsimplejson
によって解決する。
np.nan
として保存するjson
ライブラリを用いて出力すると、以下の通り出力の中に「nan」が紛れ込んでしまう。
RFC8259 にもあるように、NaN は許可されない。欠落値であるならば、せめてnull
として出力されるべきだ。[{"id": 1,"body": "yo","parent_id": nan}]
Python の標準ライブラリjson
は、simplejson
を取り込んだものである。しかし、simplejson
は標準ライブラリjson
よりも頻繁にアップデートされていて、機能・速度共に標準ライブラリに勝る。
simplejson
のdumps
は、ignore_nan
という引数を持つ。
pip install simplejson
でインストールした後、次のように書けばいい。
import numpy as npimport simplejson as jsonnumbers = [np.nan, 1, 2, 3]json.dumps(numbers, ignore_nan=True)
すると、次のような結果を得る。
[null, 1, 2, 3]