首頁 > 後端開發 > C++ > 如何使用 JSON .NET 的 ExtensionDataAttribute 反序列化具有未知欄位的 JSON?

如何使用 JSON .NET 的 ExtensionDataAttribute 反序列化具有未知欄位的 JSON?

DDD
發布: 2025-01-18 09:21:10
原創
760 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板