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