首頁 > 後端開發 > C++ > 如何用ID作為鍵從JSON創建強烈鍵入的C#對象?

如何用ID作為鍵從JSON創建強烈鍵入的C#對象?

DDD
發布: 2025-01-30 00:24:11
原創
999 人瀏覽過

How to Create Strongly Typed C# Objects from JSON with IDs as Keys?

使用 ID 作為名稱從 JSON 創建強類型 C# 對象

當遇到像 JSON 對像這樣的 API 響應時,其中 ID 數字用作數據的標識符,創建強類型 C# 對象來處理它們可能會很困難。讓我們解決這個問題。

考慮以下 JSON 響應:

{
    "5234592":{
        "pollsAndSurveys":{
            "questionsAsked":1,
            ...
            "pollCount":2},
        "attendance":{
            "averageAttendanceTimeSeconds":253,
            ...
            "percentageAttendance":100}
        },
    "5235291":{
        "pollsAndSurveys":{
            "questionsAsked":2,
            ...
            "pollCount":0},
        "attendance":{
            "averageAttendanceTimeSeconds":83,
            ...
            "percentageAttendance":100}
        }
}
登入後複製

為了創建強類型對象,我們定義了:

public class AttendanceStatistics
{
    [JsonProperty(PropertyName = "registrantCount")]
    public int RegistrantCount { get; set; }

    // 其他属性
}

public class PollsAndSurveysStatistics
{
    [JsonProperty(PropertyName = "pollCount")]
    public int PollCount { get; set; }

    // 其他属性
}

public class SessionPerformanceStats
{
    [JsonProperty(PropertyName = "attendance")]
    public AttendanceStatistics Attendance { get; set; }

    [JsonProperty(PropertyName = "pollsAndSurveys")]
    public PollsAndSurveysStatistics PollsAndSurveys { get; set; }
}

public class WebinarPerformanceStats
{
    public List<SessionPerformanceStats> Stats { get; set; }
}
登入後複製

但是,我們面臨一個問題:JSON 中的根對象與我們預期的 WebinarPerformanceStats 類型不匹配。

為了解決這個問題,我們可以使用字典作為根對象:

var dictionary = JsonConvert.DeserializeObject<Dictionary<string, SessionPerformanceStats>>(theJsonResponse);
登入後複製

JSON.NET 有效地處理字典的序列化和反序列化,將屬性名稱轉換為字典鍵。在這種情況下,ID 數字將被反序列化為字典鍵。如果您願意,可以將它們聲明為長整數:

var dictionary = JsonConvert.DeserializeObject<Dictionary<long, SessionPerformanceStats>>(theJsonResponse);
登入後複製

通過這種方法,您現在可以將 JSON 響應反序列化為強類型的 Dictionary<string, SessionPerformanceStats>Dictionary<long, SessionPerformanceStats>,其中 ID 數字用作訪問單個會話統計信息的鍵。

以上是如何用ID作為鍵從JSON創建強烈鍵入的C#對象?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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