Crie um object c # fortemente tipado a partir do object json com o ID como o nome

Eu estou tentando fazer uso da API para um conhecido provedor de reuniões on-line. Uma de suas chamadas de API retorna um object assim.

{ "5234592":{ "pollsAndSurveys":{ "questionsAsked":1, "surveyCount":0, "percentageSurveysCompleted":0, "percentagePollsCompleted":100, "pollCount":2}, "attendance":{ "averageAttendanceTimeSeconds":253, "averageInterestRating":0, "averageAttentiveness":0, "registrantCount":1, "percentageAttendance":100} }, "5235291":{ "pollsAndSurveys":{ "questionsAsked":2, "surveyCount":0, "percentageSurveysCompleted":0, "percentagePollsCompleted":0, "pollCount":0}, "attendance":{ "averageAttendanceTimeSeconds":83, "averageInterestRating":0, "averageAttentiveness":0, "registrantCount":1, "percentageAttendance":100} } } 

Eu estou tentando fazer um object fortemente tipado em c # para que eu possa lidar com esses dados. Eu posso criar objects para o bit pollsAndSurveys e o bit de atendimento, mas eu não sei como lidar com o número de id, neste caso 5234592 & 5235291, que é o identificador da session.

 public class AttendanceStatistics { [JsonProperty(PropertyName = "registrantCount")] public int RegistrantCount { get; set; } [JsonProperty(PropertyName = "percentageAttendance")] public float PercentageAttendance{ get; set; } [JsonProperty(PropertyName = "averageInterestRating")] public float AverageInterestRating { get; set; } [JsonProperty(PropertyName = "averageAttentiveness")] public float AverageAttentiveness { get; set; } [JsonProperty(PropertyName = "averageAttendanceTimeSeconds")] public float AverageAttendanceTimeSeconds { get; set; } } public class PollsAndSurveysStatistics { [JsonProperty(PropertyName = "pollCount")] public int PollCount { get; set; } [JsonProperty(PropertyName = "surveyCount")] public float SurveyCount { get; set; } [JsonProperty(PropertyName = "questionsAsked")] public int QuestionsAsked { get; set; } [JsonProperty(PropertyName = "percentagePollsCompleted")] public float PercentagePollsCompleted { get; set; } [JsonProperty(PropertyName = "percentageSurveysCompleted")] public float PercentageSurveysCompleted { 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 Stats { get; set; } } 

Tenho certeza de que o WebinarPerformanceStats é o problema, mas não sei para onde ir a partir daqui. O que eu teria que mudar para obter

NewtonSoft.Json.JsonConvert.DeserializeObject(theJsonResponse)

trabalhar?

Faça o seu object raiz ser um dictionary:

 var dictionary = JsonConvert.DeserializeObject>(theJsonResponse); 

O Json.NET serializa um dictionary de e para um object JSON, com as chaves sendo convertidas nos nomes das propriedades. No seu caso, os números de ID serão desserializados como as chaves do dictionary. Se você tem certeza de que eles sempre serão números, você pode declará-los assim:

 var dictionary = JsonConvert.DeserializeObject>(theJsonResponse); 

Consulte Serializar um dictionary e desserializar um dictionary