PythonでJSONを扱う際に、bool_型のデータをシリアライズしようとすると、「bool_ is not JSON serializable」というエラーが発生することがあります。この記事では、そのエラーの原因と対処法について説明します。

原因

このエラーは、bool_型のデータをJSONに変換しようとしたときに発生します。bool_型は、実際にはnumpy.bool_であり、これをそのままJSONに書き込むことはできません。

対処法

方法1: bool()関数を使用する

bool_型のデータを通常のPythonのbool型に変換することで、このエラーを解決することができます。以下にその例を示します。

import numpy as np
import json

json.dumps({"X": bool(np.int32(5) > 5)})

方法2: カスタムJSONエンコーダを使用する

複数のbool_キーがある場合や、ネストされた構造がある場合には、すべてのbool_フィールドを変換するためにカスタムJSONエンコーダを使用することができます。以下にその例を示します。

import json

class CustomJSONizer(json.JSONEncoder):
    def default(self, obj):
        return super().encode(bool(obj)) if isinstance(obj, np.bool_) else super().default(obj)

# オブジェクト/辞書を変換する
json.dumps(d, cls=CustomJSONizer)

以上が、「bool_ is not JSON serializable」というエラーの解決方法です。これらの方法を試してみてください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です