【发布时间】:2019-06-14 11:30:42
【问题描述】:
好的,所以我刚刚开始学习 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")))
{
}
现在我想通过挑选某些关键值(即姓名、身份证、年份等)来创建学生详细信息列表
在 python 中,就像将以下内容放在前面的 if 语句中一样简单
stu = (
st['Forename']+' '+ st['Surname']+'<br><br>',
)
newstudents.append(stu)
但是对于我当前的 c# 设置,我想我必须重新迭代 studentporoperty 或添加更多 if 语句来检索我想要的属性值。
这感觉很笨拙而且不正确,如果我学到了什么“如果感觉不对,那么你可能做错了”
我想知道此时将 JSON 解析为 JArray 是否正确,或者是否有更简单的方法来访问键和值?
【问题讨论】:
-
您真的使用的是 C# 语言版本 2.0 吗?您是指 .Net Core 2.0 还是 .Net Standard 2.0?
-
简单的方式是将整个字符串反序列化为对象,而不是逐个访问。您可以编写一个简单的
var students=JsonConvert.DeserializeObject<Student[]>(json)来获取一个强类型的学生对象数组。日期没有格式,它们是二进制值。 -
您可以通过复制 JSON 示例并将其粘贴到带有
Edit > Paste Special > Paste JSON as Classes的 C# 文件中来轻松生成必要的类。 -
@phuzi 我使用的是 .netcore 2.2 所以可能不是 c#2.0 我认为它们是一样的,我的错
-
@Panagiotis Kanavos 很酷,不知道你能做到,但是每个学生都有大量的 json 数据,我只需要说 5-12 个部分