gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:21:18 25 4
gpt4 key购买 nike

我正在尝试使用知名在线 session 提供商的 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,这是 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<SessionPerformanceStats> Stats { get; set; }
}

我很确定 WebinarPerformanceStats 是问题所在,但我不知道从这里去哪里。我必须改变什么才能得到

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

上类?

最佳答案

让你的根对象成为一个字典:

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

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

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

参见 Serialize a DictionaryDeserialize a Dictionary

关于c# - 从名称为 ID 的 json 对象创建一个强类型的 c# 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34213566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com