「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Pythonのデフォルトエンコーダーを使用して、カスタムオブジェクトJSON Serializableを作成するにはどうすればよいですか?

Pythonのデフォルトエンコーダーを使用して、カスタムオブジェクトJSON Serializableを作成するにはどうすればよいですか?

2025-03-25に投稿されました
ブラウズ:275

How can I make custom objects JSON serializable using the default encoder in Python?

を作成するJSONをデフォルトのエンコーダーでシリアル化可能にする

カスタムをシリアル化するためのデフォルトの方法JSON.JSON.JSONENCODERを掲載し、カスタムエンコーダーをJSON.Dumps()に渡すことを伴います。これにより、通常、次のようなコードが得られます。 def default(self、obj): ISINSTANCE(OBJ、foo)の場合: obj.to_json()を返します json.jsonencoder.default(self、obj)を返します print(json.dumps(obj、cls = customencoder))

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Foo):
            return obj.to_json()

        return json.JSONEncoder.default(self, obj)

print(json.dumps(obj, cls=CustomEncoder))

インポートJSON def _default(self、obj): return getattr(obj .__ class__、 "to_json"、_default.default)(obj) _DEFAULT.DEFAULT = JSONENCODER.DEFAULT jsonencoder.default = _default

このモンキーパッチされたモジュールを利用して、単純にインポートすると、JSONモジュールに変更を自動的に適用します。 JSonEncoderはこの方法をチェックし、シリアル化にその返品値を使用します。これにより、明示的なto_json()メソッドの必要性が回避されます。標準のJSONタイプではないPythonオブジェクトにデフォルト()メソッドをオーバーライドすることにより、特別なクラスの方法を必要とせずにシリアル化を達成できます。この関数は、シリアル化中に追加された「_python_object」キーを検出し、それを使用してpickle.loadsを使用して元のオブジェクトを再構築することができます。ピクルスアプローチにより、ほとんどのPythonオブジェクトの自動シリアル化が可能になり、より一般化されたソリューションになります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3