ホームページ >バックエンド開発 >C++ >カスタム JsonConverter は JSON 逆シリアル化で予期しない列挙値をどのように処理できますか?

カスタム JsonConverter は JSON 逆シリアル化で予期しない列挙値をどのように処理できますか?

DDD
DDDオリジナル
2025-01-03 10:39:44343ブラウズ

How Can a Custom JsonConverter Handle Unexpected Enum Values in JSON Deserialization?

カスタム処理による予期しない JSON 列挙値の克服

現在の列挙定義を超える列挙値を含む JSON データに遭遇すると、次のような問題が発生する可能性があります。 Json.net を使用した逆シリアル化中の例外。この問題を解決するには、カスタム JsonConverter を作成することが効果的です。

TolerantEnumConverter: 柔軟な逆シリアル化アプローチ

TolerantEnumConverter は、認識されないものを柔軟に処理するカスタム JsonConverter です。列挙値。意思決定ツリーに従って、適切な応答を決定します。

  • 一致する enum 値 (文字列または整数による) が JSON 内に存在する場合、それが使用されます。
  • nullable の場合enum では、一致するものが見つからない場合は null 値が返されます。
  • enum に「Unknown」値が含まれる場合、それはキャッチオールとして使用されます。認識されない値の場合。
  • 上記のいずれにも当てはまらない場合、列挙型の最初の値が使用されます。

利点と実装

TolerantEnumConverter を使用すると、次のような利点があります。利点:

  • 認識できない値に関係なく、JSON 列挙型のシームレスな逆シリアル化。
  • 特定の要件に基づいて処理をカスタマイズ可能。
  • null 許容と非 null 許容の両方との互換性enums.

を実装するにはTolerantEnumConverter は、列挙型に [JsonConverter] 属性として追加するだけです。回答で提供されるコードは開始点として使用でき、プロジェクトのニーズに合わせて調整できます。

デモと効果

提供されたデモでは、TolerantEnumConverter がどのように処理するかを紹介します。有効な値、無効な値、null 値など、さまざまな JSON 列挙値。結果は、null 許容列挙型と null 非許容列挙型の両方について表示され、柔軟な逆シリアル化結果を提供しながら例外を防止するコンバーターの機能を示します。

以上がカスタム JsonConverter は JSON 逆シリアル化で予期しない列挙値をどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。