Pythonのjsonメソッド JSONEncoder

Pythonのjsonモジュールには、JSONEncoderというクラスがあります。JSONEncoderクラスは、Pythonのデータ構造をJSON形式の文字列にエンコードするためにカスタマイズできる機能を提供します。通常、これはカスタムのJSONエンコードロジックを実装する際に使用されます。

JSONEncoderクラスをサブクラス化し、defaultメソッドをオーバーライドすることで、カスタムのエンコードロジックを実装できます。以下は、JSONEncoderをサブクラス化してカスタムのエンコードロジックを追加する例です:

python
import json

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, MyCustomClass):
            # MyCustomClassオブジェクトをJSONにエンコードするカスタムロジックを実装します
            return {"custom_key": obj.some_attribute}
        return super().default(obj)

# カスタムエンコーダーを使用してPythonのデータ構造をJSON形式の文字列に変換します
data = {"custom_obj": MyCustomClass()}
json_string = json.dumps(data, cls=CustomEncoder)

# JSON形式の文字列を表示します
print(json_string)

この例では、CustomEncoderというカスタムのエンコーダーを作成し、defaultメソッドをオーバーライドして、MyCustomClassというカスタムクラスのオブジェクトをJSONにエンコードするカスタムロジックを実装しています。その後、json.dumpsメソッドのclsパラメータを使用して、このカスタムエンコーダーを指定してPythonのデータ構造をJSON形式に変換しています。

JSONEncoderクラスを使用すると、特定のデータ型やオブジェクトに対してカスタムのエンコードルールを定義することができます。これにより、JSON形式の出力を細かく制御することができます。