有没有更简单的方法来访问Jarray

时间:2019-06-14 11:30:42

标签: c# json json.net

好的,所以我刚刚开始学习c#,然后重新创建一个用python制作的程序,该程序使用api提取学生记录,并使用json数据创建新的用户帐户。

现在,我知道python具有很多“魔术”功能,并且设计起来既快速又容易。但是我必须有一种更简单的方法来访问c#中的json对象值

Python中的示例,用于为我只需要入学日期=今天的学生过滤出我的数据

for st in student:  # for every student, if DateOfEntry = today add to csv file
if (st['DateOfEntry'])[:10].strip() == today.strftime('%d/%m/%Y'):

现在在C#中从Jarray上在线找到的资源ive中访问我需要做的事情

JArray students = JArray.Parse(response.Content);

foreach (JObject student in students.Children<JObject>())
    {
    foreach (JProperty studentProperty in student.Properties())
        {
        string propertyName = studentProperty.Name;
        if (propertyName.Equals("DateOfEntry"))
            {
            string propertyValue = (string)studentProperty.Value;
            //Console.WriteLine("Name: {0}, Value: {1}", propertyName, propertyValue);
            if (propertyValue.Equals(today.ToString("dd/MM/yyyy HH:mm:ss")))
                {
                }

现在,我想通过选择某些键值(例如姓名,ID,年份等)来创建学生详细信息列表的列表

在python中,就像将以下内容放在前面的if语句中一样简单

stu = (
        st['Forename']+' '+ st['Surname']+'<br><br>',
      )
    newstudents.append(stu)

但是在我当前的c#设置下,我想我不得不在Studentporoperty上再次重申,或者添加更多if语句来检索我想要的属性值。

这感觉很笨拙,而且不对劲,如果我学到了什么,“如果感觉不对,那么你可能就做错了”

我想知道将JSON解析为JArray是否是正确的选择,还是有一种更简单的方法来访问键和值?

1 个答案:

答案 0 :(得分:3)

您尝试过使用Json NewtonSoft,它将大大简化Json的反序列化,然后简化学生列表的使用。 Linq在您的情况下会很方便,但是只能在C#3.0中使用。

我给您一个使用NewtonSoft的简单示例(接收Nuget软件包)。

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<main id="main">
   <h3>Main Counter: {{counter}} <button @click="inc">+</button>
     -- Array: {{arr}} <button @click="push">push</button></h3>
   <child-comp :counter="counter" :arr="arr"></child-comp>
   <child-comp :counter="counter" :arr="arr"></child-comp>
</main>