如何将Json中的2个数组解析为C#中的2个列表?

时间:2019-01-31 23:56:58

标签: c# json json.net

我正在用C#编写一个应用程序供我的老师用于学生出勤,并且因为我刚刚开始使用C#(来自Java),所以我需要有人来指导我正确的方向。

我有一个Json文件,其中包含2个数组,一个用于上午学生,一个用于下午学生,我需要将它们都解析为单独的列表。在Json文件中,它们都有单独的名称(“早晨”和“下午”)。如何使用Json.NET做到这一点?

我已经有2个列表,morningStudentsafternoonStudents每个包含学生。 Student类包含3个变量,名称,ID和状态,与每个学生在每个学生数组中获得的字段相对应。

在下面,您可以找到我的Json文件的外观的表示形式。

{
    "morning": 
    [
        {
            "name": "Morning Student 1",
            "id": "123456",
            "status": "0"
        }
    ],
    "afternoon": 
    [
        {
            "name": "Afternoon Student 1",
            "id": "123456",
            "status": "0"
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

我建议您有两个.NET类,一个代表学生,一个代表时间表。 StudentSchedule类将具有morning的{​​{1}}属性列表和Student的{​​{1}}属性列表。然后,您可以使用JSON.NET直接对其进行反序列化。

evening

我用这段代码来摆弄小提琴,供您查看:https://dotnetfiddle.net/f7InH7

您可以在this question中反序列化为动态对象。由于您是C#的新手,所以我暂时不介绍动态信息,而将重点放在首先掌握基本原理上。

有关JSON.NET的更多文档,请参见https://www.newtonsoft.com/json/help/html/SerializingJSON.htm

答案 1 :(得分:-1)

public class Morning
{
    public string name { get; set; }
    public string id { get; set; }
    public string status { get; set; }
}

public class Afternoon
{
    public string name { get; set; }
    public string id { get; set; }
    public string status { get; set; }
}

public class RootObject
{
    public List<Morning> morning { get; set; }
    public List<Afternoon> afternoon { get; set; }
}

使用json2csharp.com生成。

在那之后,只需反序列化就可以了。