ホームページ > バックエンド開発 > Python チュートリアル > カスタム Python クラスを JSON シリアル化可能にするにはどうすればよいですか?

カスタム Python クラスを JSON シリアル化可能にするにはどうすればよいですか?

DDD
リリース: 2024-12-27 00:31:10
オリジナル
516 人が閲覧しました

How Can I Make Custom Python Classes JSON Serializable?

カスタム Python クラスを JSON シリアル化可能にする

json.dumps() 関数を使用してカスタム Python クラスを JSON にシリアル化しようとすると、エラーが発生しますこれは、カスタムのシリアル化をネイティブにサポートしていない Python のデフォルトの動作が原因で発生する可能性があります。オブジェクト.

カスタム シリアル化メソッド: .toJSON()

この問題に対処する 1 つのアプローチは、オブジェクトを実装するクラス内にカスタム .toJSON() メソッドを作成することです。シリアル化ロジック。このメソッドは、オブジェクトの属性を反復処理して JSON 文字列を生成することにより、オブジェクトを JSON シリアル化可能な辞書に変換します。以下に例を示します:

class FileItem:
    def __init__(self, fname):
        self.fname = fname

    def toJSON(self):
        return json.dumps({"filename": self.fname})
ログイン後にコピー

.toJSON() メソッドを呼び出すことで、カスタム オブジェクトを JSON 文字列にシリアル化できます:

x = FileItem('/foo/bar')
json_string = x.toJSON()
ログイン後にコピー

orjson Library

より包括的かつ効率的なアプローチには、次のようなサードパーティ ライブラリを使用することをお勧めします。オルジソン。 Orjson は、非常に高速な JSON シリアル化と逆シリアル化を提供する Python 用の C 拡張機能です。 orjson を使用すると、メタクラスを定義することでカスタム オブジェクトのシリアル化を有効にできます。

import orjson

class JsonSerializableMeta(type):
    def __orjson__(cls):
        return cls.__dict__

class FileItem(metaclass=JsonSerializableMeta):
    def __init__(self, fname):
        self.fname = fname
ログイン後にコピー

このメタクラスは __orjson__ メソッドをオーバーライドして、オブジェクトの属性を辞書として返し、JSON へのシリアル化を有効にします。

以上がカスタム Python クラスを JSON シリアル化可能にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート