gpt4 book ai didi

c# - 有没有更简单的方法来访问 Jarray 中的 Json 对象值

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:47 25 4
gpt4 key购买 nike

好的,所以我刚刚开始学习 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 上在线找到的资源访问我需要做这样的事情

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# 设置中,我可能不得不重新迭代 studentpoperty 或添加更多 if 语句来检索我想要的属性值。

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

我想知道此时将 JSON 解析为 JArray 是否是正确的做法,或者是否有更简单的方法来访问键和值?

最佳答案

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

我给你一个使用 NewtonSoft 的简单例子(接受 Nuget 包)。

class Program
{
static void Main(string[] args)
{
MyClass object1 = new MyClass(1, "A", new DateTime(2019, 1, 1));
MyClass object2 = new MyClass(2, "B", new DateTime(2019, 1, 2));

List<MyClass> myList = new List<MyClass>();
myList.Add(object1);
myList.Add(object2);

string json = JsonConvert.SerializeObject(myList);
List<MyClass> objectAfterJson = JsonConvert.DeserializeObject<List<MyClass>>(json);

int id = objectAfterJson[0].Id;
}
}

class MyClass
{
public int Id;
public string Name;
public DateTime Date;

public MyClass(int id, string name, DateTime date)
{
Id = id;
Name = name;
Date = date;
}
}

关于c# - 有没有更简单的方法来访问 Jarray 中的 Json 对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56597305/

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