JSON 結果に既知のフィールドと未知のフィールドが含まれており、未知のフィールド名が予測できない場合、アクセスおよび変更のためにこれらの未知のフィールドを辞書にマップする必要があります。このために、JSON .NET の JsonExtensionDataAttribute
属性を使用できます。
次のクラス構造を考えてみましょう:
<code class="language-csharp">public class Product { public string id { get; set; } public string name { get; set; } // 额外字段 [JsonExtensionData] private IDictionary<string, JToken> _extraStuff; }</code>
JsonExtensionDataAttribute
を _extraStuff
属性に適用することで、不明なフィールドをこのディクショナリにマップするように JSON .NET に指示できます。 JToken
は、その特定のフィールドの生の JSON データを表します。
このクラスを使用して JSON を逆シリアル化する場合:
<code class="language-json">{ "id": "7908", "name": "product name", "unknown_field_1": "some value", "unknown_field_2": "some value" }</code>
Product
オブジェクトの _extraStuff
辞書には、次のキーと値のペアが自動的に設定されます:
<code class="language-csharp">{ {"unknown_field_1", "some value"}, {"unknown_field_2", "some value"} }</code>
このアプローチは、カスタム コントラクト パーサーや動的オブジェクトの継承を必要とせずに、未知のフィールドを処理する効率的な方法を提供します。
注: JsonExtensionDataAttribute
プロパティは、JSON .NET v5 バージョン 5 以降で使用できます。
以上がJSON .NET の ExtensionDataAttribute を使用して、不明なフィールドを持つ JSON を逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。