JSON データを解析するときは、提供された列挙値がコードベースで定義されている列挙値と一致しないシナリオを処理することが重要です。これは通常、サードパーティ API が時間の経過とともに新しい列挙値を導入するときに発生します。
解決策: カスタム JsonConverter
この問題に対処するには、カスタム JsonConverter を作成できます。
class TolerantEnumConverter : JsonConverter { // ... Implementation ... }
このコンバーターは、次のように逆シリアル化プロセスを簡素化します。ロジック:
使用例:
[JsonConverter(typeof(TolerantEnumConverter))] enum Status { Ready, Set, Go } string json = @"{ ""status"": ""SomethingElse"" }"; var status = JsonConvert.DeserializeObject<Status>(json); // Returns "Ready"
Null 許容列挙値と"未知"値:
不明な値を持つ null 許容列挙型を処理するには、列挙型定義に「Unknown」値を追加します。例:
[JsonConverter(typeof(TolerantEnumConverter))] enum Color { Red, Yellow, Green, Unknown = 99 } string colorJson = @"{ ""color"": ""Purple"" }"; var color = JsonConvert.DeserializeObject<Color?>(colorJson); // Returns null
結論:
ここで紹介するカスタム JsonConverter を利用すると、列挙値が時間の経過とともに変化する場合でも、JSON の逆シリアル化がスムーズに進行することを保証できます。エラーを防止し、データの整合性を維持します。
以上がJSON を逆シリアル化するときに不明な列挙値を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。