JSON反序列化多级C#

时间:2017-08-25 11:52:08

标签: c# json

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

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

我做错了什么?

感谢您的帮助。

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

2 个答案:

答案 0 :(得分:3)

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

如果您想要遍历必须编写的类别

foreach (var category in webinar.Categories)

然后,您会收到错误,因为WebinarCategories未实现GetEnumerator,因为它未实现IEnumerable。如果您想在网络研讨会中存储类别列表,最简单的方法就是更改您的媒体资源。

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

答案 1 :(得分:0)

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

IEnumerable<WebinarCategories> Categories { get; set; }

或者,如果你真的想 public function index(){ return view('pages.index'); } public function about(){ return view('pages.about'); }