Создайте строго типизированный объект c # из объекта json с ID как имя

Я пытаюсь использовать API для известного онлайн-провайдера. Один из вызовов API возвращает объект, который выглядит так.

{ "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} } } 

Я пытаюсь сделать строго типизированный объект в C #, чтобы я мог справиться с этими данными. Я могу создавать объекты для бит pollsAndSurveys и бит посещаемости, но я не знаю, как бороться с номером id, в данном случае 5234592 и 5235291, то есть идентификатором сеанса.

 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; } } 

Я почти уверен, что проблема с WebinarPerformanceStats является проблемой, но я не знаю, куда идти отсюда. Что я должен изменить, чтобы получить

NewtonSoft.Json.JsonConvert.DeserializeObject(theJsonResponse)

работать?

Сделайте свой корневой объект в словаре:

 var dictionary = JsonConvert.DeserializeObject>(theJsonResponse); 

Json.NET сериализует словарь от объекта JSON и до него, при этом ключи преобразуются в имена свойств. В вашем случае идентификационные номера будут десериализованы как клавиши словаря. Если вы уверены, что они всегда будут числами, вы можете объявить их такими:

 var dictionary = JsonConvert.DeserializeObject>(theJsonResponse); 

См. Сериализация словаря и десериализация словаря

  • Указание пользовательского формата DateTime при сериализации с помощью Json.Net
  • Как программно выбирать конструктор во время десериализации?
  • Объединение двух массивов Json.NET путем конкатенации содержащихся элементов
  • Разбор JSON DateTime от JSON Serializer от Newtonsoft
  • Строка Parse Json в C #
  • ТипNameHandling предостережение в Newtonsoft Json
  • Как я могу зашифровать выбранные свойства при сериализации моих объектов?
  • Сериализация нулевого значения в JSON.NET
  • Разбор массива JSON с использованием Json.Net
  • Как я могу десериализовать JSON для простого словаря в ASP.NET?
  • Что такое эквивалент JSON.NET XPath, SelectNodes XML, SelectSingleNode?
  • Давайте будем гением компьютера.