gpt4 book ai didi

c# - 序列化为 JSON 时可以使用 C# 方法吗

转载 作者:行者123 更新时间:2023-12-01 22:04:06 24 4
gpt4 key购买 nike

我正在使用 JSON.Net 将数据从我的 C# 程序转换为 JSON 格式。我想知道在序列化为 json 时是否有任何方法可以使用我在 C# 程序中使用的方法?

一些背景上下文:

存在一个类Students其具有属性 String StudentName , Guid StudentIdDictionary<String, Int> Grades Record其中科目名称是键,成绩是值。

存在另一个类 ClassOfStudents它有一个属性 List<Student> Students

我正在尝试打印所有学生姓名的列表。我已经成功地使用以下方法在 C# 上做到了这一点:

public static void ViewStudentsPool()
{
Console.Write(Line);
Console.WriteLine("\nPlease find updated students pool below");
Console.Write(Line + "\n");
foreach (var studentname in ClassOfStudents.Students)
{
Console.WriteLine("Student Id: " + studentname.StudentId + "| Student Name: " + studentname.StudentName);
}
Console.Write(Line + "\n\n");
}

我想知道在序列化为 JSON 时是否可以使用此方法。

我目前有以下内容,它打印出我不想要的学生的所有属性,我只想打印出他们的名字。

JsonSerializer serializer = new JsonSerializer();
serializer.NullValueHandling = NullValueHandling.Ignore;

using (StreamWriter sw = new StreamWriter(@"c:\Students.txt"))
using (JsonWriter writer = new JsonTextWriter(sw))
{
writer.Formatting = Formatting.Indented;
serializer.Serialize(writer, ClassOfStudents.Students );
}

我尝试替换 ClassOfStudents.Students最后一行 ViewStudentsPool()但它显示一个错误。

有关如何仅打印学生姓名的任何帮助吗?

谢谢

最佳答案

一种简单的方法是将您的 ClassOfStudents.Students 列表映射到您正在查找的结构,例如使用 LINQ:

var studentsWithNamesOnly = ClassOfStudents.Students
.Select(x => new { x.StudentName });

您可以获取此输出并序列化那个,而不是原来的 ClassOfStudents.Students 变量,如下所示:

serializer.Serialize(writer, studentsWithNamesOnly);

这会产生这样的结果:

[
{ "StudentName": "Name1" },
{ "StudentName": "Name2" },
...
]

您不必像我在此处所做的那样在 Select 中创建新的匿名对象:如果需要的话,您可以像原始示例一样设置字符串格式。

关于c# - 序列化为 JSON 时可以使用 C# 方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52643254/

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