首頁 >後端開發 >C++ >如何將帶有動態鍵的巢狀 JSON 反序列化為 C# 類別?

如何將帶有動態鍵的巢狀 JSON 反序列化為 C# 類別?

Barbara Streisand
Barbara Streisand原創
2025-01-19 21:51:11389瀏覽

How to Deserialize Nested JSON with Dynamic Keys into C# Classes?

將巢狀JSON反序列化到C#類別

將JSON響應反序列化為C#類,關鍵在於使類別結構與整個JSON資料相符。以下是如何反序列化給定JSON的解決方案:

JSON結構:

<code>{
    "results": {
        "jobcodes": {
            "1": { ... },
            "2": { ... },
            ...
        }
    }
}</code>

問題:

您沒有考慮嵌套「jobcodes」物件中動態鍵(「1」和「2」)。

解:

要處理動態鍵的對象,請使用Dictionary<string, JobCode>

<code class="language-csharp">class Results
{
    [JsonProperty("jobcodes")]
    public Dictionary<string, JobCode> JobCodes { get; set; }
}</code>

完整的類​​別結構:

<code class="language-csharp">class RootObject
{
    [JsonProperty("results")]
    public Results Results { get; set; }
}

class JobCode
{
    [JsonProperty("_status_code")]
    public string StatusCode { get; set; }
    [JsonProperty("_status_message")]
    public string StatusMessage { get; set; }
    [JsonProperty("id")]
    public string Id { get; set; }
    [JsonProperty("name")]
    public string Name { get; set; }
}</code>

反序列化:

將JSON反序列化到RootObject類別:

<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(jsonResponse);</code>

結果:

您可以透過造訪obj.Results.JobCodes.Values來取得List<JobCode>。每個JobCode都將具有來自JSON的相應屬性值。

以上是如何將帶有動態鍵的巢狀 JSON 反序列化為 C# 類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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