ホームページ > バックエンド開発 > C++ > JSON .NET の ExtensionDataAttribute を使用して、不明なフィールドを持つ JSON を逆シリアル化するにはどうすればよいですか?

JSON .NET の ExtensionDataAttribute を使用して、不明なフィールドを持つ JSON を逆シリアル化するにはどうすればよいですか?

DDD
リリース: 2025-01-18 09:21:10
オリジナル
761 人が閲覧しました

How Can I Deserialize JSON with Unknown Fields Using JSON .NET's ExtensionDataAttribute?

JSON .NET の ExtensionDataAttribute を使用して、既知および未知のフィールドを含む JSON データを逆シリアル化します

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 サイトの他の関連記事を参照してください。

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