从ID为名称的json对象创建一个强类型的c#对象

我正在尝试为一个著名的在线会议提供者使用该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<SessionPerformanceStats> Stats { get; set; }

}

我很确定WebinarPerformanceStats是问题所在,但我不知道从这里出发。我要改变什么才能得到

NewtonSoft.Json.JsonConvert.DeserializeObject<WebinarPerformanceStats>(theJsonResponse)

上班?

回答:

使您的根对象成为字典:

var dictionary = JsonConvert.DeserializeObject<Dictionary<string, SessionPerformanceStats>>(theJsonResponse);

Json.NET将字典与JSON对象之间的序列化,并将键转换为属性名称。在您的情况下,ID号将反序列化为字典键。如果您确定它们始终是数字,则可以这样声明它们:

var dictionary = JsonConvert.DeserializeObject<Dictionary<long, SessionPerformanceStats>>(theJsonResponse);

请参见序列化字典和反序列化字典

以上是 从ID为名称的json对象创建一个强类型的c#对象 的全部内容, 来源链接: utcz.com/qa/402231.html

回到顶部