Создайте строго типизированный объект 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); 

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

  • Исключить свойство из сериализации через пользовательский атрибут (json.net)
  • Использование пользовательской десериализации тела WCF без изменения десериализации шаблона URI
  • Json.NET добавляет обратную косую черту при возврате сериализованной строки json
  • Серийный объект Json.NET с корневым именем
  • Сериализация / десериализация пользовательской коллекции с дополнительными свойствами с помощью Json.Net
  • Уничтожить stream массива json по одному элементу за раз
  • В чем разница между PreserveReferencesHandling и ReferenceLoopHandling в Json.Net?
  • JSON.Net Xml Сериализация неправильно понимает массивы
  • Как я могу получить список ключей от Json.NET?
  • Удаление десериализации JSON в .NET-объект с использованием Newtonsoft (или LINQ to JSON, возможно?)
  • Исключение «Исключительная привязка к реляционной ссылке» с JSON.Net
  • Давайте будем гением компьютера.