Heim >Backend-Entwicklung >C++ >Wie erstelle ich stark getippte C# -Objekte von JSON mit IDs als Schlüssel?
zu erstellen Wenn eine API -Antwort wie ein JSON -Objekt begegnet wird, wird die ID -Nummer als Kennung für Daten verwendet, und es kann schwierig sein, ein starkes Typ -C -Objekt zu erstellen, um mit ihnen umzugehen. Lassen Sie uns dieses Problem lösen.
Betrachten Sie die folgende JSON -Antwort:
Um ein starkes Typ -Objekt zu erstellen, definieren wir:
<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>
wir stehen jedoch vor einer Frage: Das Root -Objekt in JSON stimmt nicht mit dem von uns erwarteten
<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>-Typ.
WebinarPerformanceStats
Um dieses Problem zu lösen, können wir das Wörterbuch als Stammobjekt verwenden:
json.net verarbeitet effektiv die Serialisierung und das Gerät des Wörterbuchs, um den Attributnamen in einen Wörterbuchschlüssel umzuwandeln. In diesem Fall wird die ID -Nummer in einen Wörterbuchschlüssel durchgeführt. Wenn Sie bereit sind, können Sie sie als lange ganze Zahl deklarieren:
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, SessionPerformanceStats>>(theJsonResponse);</code>
Mit dieser Methode können Sie nun die JSON -Antwort in die Rückwärtsgründung
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<long, SessionPerformanceStats>>(theJsonResponse);</code>oder
verwandeln, wobei die ID -Nummer als Schlüssel zum Zugriff auf eine einzelne Sitzungsstatistik verwendet wird. Dictionary<string, SessionPerformanceStats>
Das obige ist der detaillierte Inhalt vonWie erstelle ich stark getippte C# -Objekte von JSON mit IDs als Schlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!