Python でカスタム JSON エンコーダーを使用してセットをシリアル化する方法

Linda Hamilton
リリース: 2024-10-25 05:17:02
オリジナル
195 人が閲覧しました

How to Serialize Sets with a Custom JSON Encoder in Python?

セットの JSON シリアル化

あなたの課題は、セットが本質的に JSON ではないため、セットに遭遇すると JSON エンコードによってエラーが発生するという事実から生じています。シリアライズ可能。これを解決するには、カスタム JSON エンコーダを作成できます。

次の例を考えてみましょう:

import json

class SetEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, set):
            return list(obj)
        return json.JSONEncoder.default(self, obj)
ログイン後にコピー

ここで、SetEncoder クラスは json.JSONEncoder を拡張し、カスタムのデフォルト メソッドを含みます。オブジェクトがエンコーダーに渡されると、このメソッドによってその処理方法が決定されます。セットの場合、メソッドはその要素のリストを返します。それ以外の場合は、エンコード プロセスを元の JSONEncoder に委任します。

このカスタム エンコーダーを使用すると、次のようにセットを JSON シリアル化できます:

data_str = json.dumps(set([1, 2, 3, 4, 5]), cls=SetEncoder)
print(data_str)
ログイン後にコピー

このコードは出力します:

'[1, 2, 3, 4, 5]'
ログイン後にコピー

複雑なオブジェクトとネストされた値の処理

前述したように、オブジェクトにはシリアル化する必要があるネストされた値が含まれている場合があります。この目的のために、追加の型とそのカスタム シリアル化を考慮してデフォルト メソッドを拡張できます。

たとえば、シリアル化中に表現したい何かというクラスがあるとします。以下をデフォルトのメソッドに追加できます:

if isinstance(obj, Something):
    return 'CustomSomethingRepresentation'
ログイン後にコピー

これで、Something タイプのオブジェクトが検出されると、エンコーダーは値 'CustomSomethingRepresentation' を返します。

この方法では、必要に応じてさまざまなデータ型とネストされた値を処理する包括的なエンコーダーを作成し、JSON シリアル化を確実に成功させることができます。

以上がPython でカスタム JSON エンコーダーを使用してセットをシリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!