c# - 如何将给定属性集的相应键和值存储在列表中的 JSON 文件中
问题描述
我有一个要反序列化的 JSON 文件。一般来说,我对 JSON 和反序列化非常陌生,并且发现这非常具有挑战性。我的 JSON 文件结构如下,
{
"SchoolName": "ThisIsTheSchoolName",
"Student": [
{
"Id": "s001",
"Name": "ABC"
},
{
"Id": "s002",
"Name": "CDE"
},
{
"Id": "s003",
"Name": "EFG"
},
{
"Id": "s004",
"Name": "GHI"
},
{
"Id": "s005",
"Name": "IJK"
}
]
}
我要做的是首先将“SchoolName”存储为一个变量(稍后我将在我的应用程序中需要它)。其次,我想遍历 JSON 列表“Student”并将“ Id ”中的每个值存储在 List 中,并将“ Name ”中的每个值存储在另一个 List 中。我无法理解如何做到这一点。这是我迄今为止能够尝试的(哪个)
string filePath = @"D:\Projects\Student.json";
string data = File.ReadAllText(filePath);
Console.Write(data);
Console.ReadLine();
dynamic stuList= JsonConvert.DeserializeObject(data);
foreach (var item in stuList)
{
//string Id = item.Id;
//string Name= item.Version;
}
非常感谢一些帮助或指导,我可以在这方面取得领先
解决方案
在 Visual Studio 中有一个名为 Paste Special 的选项,我们可以使用它为 json 对象生成 C# 侧有效负载,它将是:
public class Student
{
public string Id { get; set; }
public string Name { get; set; }
}
public class StudentsInformation
{
public string SchoolName { get; set; }
public List<Student> Student { get; set; }
}
然后可用于反序列化,如:
var studentsInformation = JsonConvert.DeserializeObject<StudentsInformation>(data);
现在可以直接使用 studnets 列表:
var schoolName = studentsInformation.SchoolName;
var students = studentsInformtaion.Student;
推荐阅读
- sql - SQL,给数据库记录值并检查它们是否存在
- regex - TypeDoc 以及如何仅从少数路径中排除 *.d.ts 文件
- ios - Swift:使用 ARkit 漂移 scene.pointOfView
- php - php对while循环中的值求和不起作用
- excel - 使用 OptionButton 搜索列标题并使用 Excel VBA 插入新列
- laravel - laravel 5.6 如何获取所有组的消息数量?
- batch-file - 我可以批量定义一个带有另一个整数值的整数吗?
- regex - 从scala中的字符串中提取日期
- c++ - Qt 中的去抖动事件过滤器
- webpack - 在 vue 中实例化一个自定义类