Use the ID as the name to create a strong type C# object from JSON
When encounters an API response like a JSON object, the ID number is used as a identifier for data, and it may be difficult to create a strong type C# object to deal with them. Let us solve this problem.
Consider the following JSON response:
In order to create a strong type object, we define:
<code class="language-json">{ "5234592":{ "pollsAndSurveys":{ "questionsAsked":1, ... "pollCount":2}, "attendance":{ "averageAttendanceTimeSeconds":253, ... "percentageAttendance":100} }, "5235291":{ "pollsAndSurveys":{ "questionsAsked":2, ... "pollCount":0}, "attendance":{ "averageAttendanceTimeSeconds":83, ... "percentageAttendance":100} } }</code>
However, we face a question: the root object in JSON does not match the
<code class="language-csharp">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; } }</code>
WebinarPerformanceStats
In order to solve this problem, we can use the dictionary as the root object:
JSON.NET effectively handles the serialization and device of the dictionary to convert the attribute name into a dictionary key. In this case, the ID number will be carried out into a dictionary key. If you are willing, you can declare them as long integer:
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, SessionPerformanceStats>>(theJsonResponse);</code>
Through this method, you can now transform the JSON response to the backward
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<long, SessionPerformanceStats>>(theJsonResponse);</code>
, where the ID number is used as a key to access a single session statistics. Dictionary<string, SessionPerformanceStats>
The above is the detailed content of How to Create Strongly Typed C# Objects from JSON with IDs as Keys?. For more information, please follow other related articles on the PHP Chinese website!