JSON 反序列化多级 C#



我正在序列化一个多级 json 对象。这些称为网络研讨会,每个都包含如下信息。我可以毫无问题地访问第一层。如果我这样做,我可以访问第二级(类别>(,例如网络研讨会[网络研讨会].categories。时区等,但我无法循环通过它。当我尝试 foreach(网络研讨会中的类别({} 时,我得到:

CS1579 C# foreach 语句无法对类型的变量进行操作,因为它不包含"GetEnumerator"的公共定义

我做错了什么?

感谢您的帮助。

示例 JSON

{
"date": "2017-11-08T02:33:57Z",
"title": "Craft, The",
"desc": "Galeazzi's fx l rad, subs for opn fx type 3A/B/C w malunion",
"startTime": "4:03 AM",
"endTime": "5:46 PM",
"categories": {
"category": "e-learning",
"timeZone": "Asia/Jakarta",
"language": "English"
}
}

public class Rootobject
{
public Webinar[] Webinars { get; set; }
public ELearning[] Elearning { get; set; }
}
public class Webinar
{
public DateTime Date { get; set; }
public string Title { get; set; }
public string Desc { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
public WebinarCategories Categories { get; set; }
}
public class WebinarCategories
{
public string Category { get; set; }
public string TimeZone { get; set; }
public string Language { get; set; }
}

我想要实现的目标

foreach (var webinar in root.webinars) {
foreach (var category in webinar) {
<button href="javascript:void(0)" class="dropbtn">@category</button>
}
}

很简单,为什么这不起作用。

如果你想循环浏览你必须写的类别

foreach (var category in webinar.Categories)

然后你会得到一个错误,因为WebinarCategories没有实现GetEnumerator因为它没有实现IEnumerable.如果您想在网络研讨会中存储类别列表,最简单的方法是像这样更改您的属性。

public List<WebinarCategories> Categories { get; set; }

更改public WebinarCategories Categories { get; set; }

public List<WebinarCategories> Categories { get; set; }

或者,如果你真的想IEnumerable<WebinarCategories> Categories { get; set; }

最新更新