首頁 >後端開發 >C++ >如何在 C# 中使用動態子物件鍵反序列化 JSON?

如何在 C# 中使用動態子物件鍵反序列化 JSON?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-07 12:39:42728瀏覽

How to Deserialize JSON with Dynamic Child Object Keys in C#?

使用動態鍵反序列化子物件

在某些場景下,您可能會遇到帶有子物件動態鍵的JSON 資料。要有效地反序列化此數據,請考慮使用字典而不是傳統類別。

使用字典進行反序列化

您可以使用字典來表示資料。字典中的每個鍵代表一個動態鍵,每個值都是一個 T 類型的對象,它應該代表子對象的資料結構。

定義類別

對於本範例,定義類別如下:

class RootObject
{
    public Dictionary<string, User> users { get; set; }
}

class User
{
    public string name { get; set; }
    public string state { get; set; }
    public string id { get; set; }
}

反序列化JSONAJSON>

反序列化JSON> >

要將JSON 資料反序列化到RootObject類別中,請使用以下程式碼:
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);

存取子物件

一次反序列化後,可以直接透過字典存取子物件key:
foreach (string key in root.users.Keys)
{
    User user = root.users[key];
    Console.WriteLine($"key: {key}");
    Console.WriteLine($"name: {user.name}");
    Console.WriteLine($"state: {user.state}");
    Console.WriteLine($"id: {user.id}");
    Console.WriteLine();
}

範例

考慮以下JSON資料:
{
    "users" : {
        "100034" : {
            "name"  : "tom",
            "state" : "WA",
            "id"    : "cedf-c56f-18a4-4b1"
        },
        "10045" : {
            "name"  : "steve",
            "state" : "NY",
            "id"    : "ebb2-92bf-3062-7774"
        },
        "12345" : {
            "name"  : "mike",
            "state" : "MA",
            "id"    : "fb60-b34f-6dc8-aaf7"
        }
    }
}

使用提供的程式碼,您可以反序列化資料並存取每個子對象,產生以下輸出:
key: 10045
name: steve
state: NY
id: ebb2-92bf-3062-7774

key: 12345
name: mike
state: MA
id: fb60-b34f-6dc8-aaf7

key: 100034
name: tom
state: WA
id: cedf-c56f-18a4-4b1

以上是如何在 C# 中使用動態子物件鍵反序列化 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn