首頁 > 後端開發 > C++ > 如何將巢狀 JSON 屬性對應到簡單的 C# 屬性?

如何將巢狀 JSON 屬性對應到簡單的 C# 屬性?

Patricia Arquette
發布: 2025-01-24 22:57:11
原創
570 人瀏覽過

How to Map Nested JSON Properties to Simple C# Properties?

將 JSON 子屬性對應到 C# 物件中的簡單屬性

簡介

在 Newtonsoft.Json 中建立自訂反序列化行為可以透過自訂屬性和轉換器來實現。這允許您將 JSON 物件中的子屬性對應到 C# 類別中的簡單屬性,即使它們沒有對應的物件。

使用輔助方法

如果您只需要一個額外的屬性,一個簡單的方法是將您的 JSON 解析為 JObject,使用 ToObject() 填充您的類,然後使用 SelectToken() 來提取額外的屬性。例如:

<code class="language-csharp">string json = @"
{
    ""name"" : ""Joe Shmoe"",
    ""age"" : 26,
    ""picture"":
    {
        ""id"": 123456,
        ""data"":
        {
            ""type"": ""jpg"",
            ""url"": ""http://www.someplace.com/mypicture.jpg""
        }
    }
}";

JObject jo = JObject.Parse(json);
Person p = jo.ToObject<Person>();
p.ProfilePicture = (string)jo.SelectToken("picture.data.url");</code>
登入後複製

建立自訂 JsonConverter

對於更複雜的解決方案,您可以建立一個自訂 JsonConverter,它利用上述技術來處理所有以 JsonProperty 屬性標記的屬性。 JsonConverter 可以使用反射來尋找屬性,將它們對應到正確的 JSON 路徑,並相應地填入屬性。

<code class="language-csharp">class JsonPathConverter : JsonConverter
{
    // ReadJson 实现在此处...
}</code>
登入後複製

關聯自訂轉換器

使用 [JsonConverter] 屬性將自訂轉換器與目標類別關聯。然後,您可以將 [JsonProperty] 屬性套用到所需的屬性,並將 JSON 路徑指定為屬性名稱。

<code class="language-csharp">[JsonConverter(typeof(JsonPathConverter))]
class Person
{
    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("picture.data.url")]
    public string ProfilePicture { get; set; }
}</code>
登入後複製

使用這些屬性後,您可以像往常一樣反序列化 JSON,映射將自動發生。

以上是如何將巢狀 JSON 屬性對應到簡單的 C# 屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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