在程序 c# 开始时加载 JSON 数据

Loading JSON data at start of program c#

我正在尝试将已序列化的数据加载到 JSON 文件中。我希望我的程序能够工作,以便在重新打开控制台应用程序后将保存的数据买回程序内存。

我的 类 定义如下:

public class Student{
        public string StudentName { get; set; } 
        public Dictionary<string, int> GradesRecord = new Dictionary<string, int>();
        public Guid StudentId { get; set;    
    }

public class Subject{
        public string SubjectName { get; set; }
        public Guid SubjectId { get; set; }
        public int MaxMarkAvail;
    }

public class ClassOfStudents{
        public List<Student> Students = new List<Student>();
        public List<Subject> Subjects = new List<Subject>();
        public void AddSubject(Subject subjectName){
            Subjects.Add(subjectName);
        }
        public void AddStudent(Student studentName){
            Students.Add(studentName);
        }
    }

我有一个保存学生成绩的方法。

private static void ConvertStudentGradesToJson()
        {
            var studentsgrades = ClassOfStudents.Students.Select(x => new { x.StudentName, x.StudentId, x.GradesRecord });

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

            using (StreamWriter sw = new StreamWriter(@"StudentsGrades.JSON"))
            using (JsonWriter writer = new JsonTextWriter(sw))
            {
                writer.Formatting = Formatting.Indented;
                serializer.Serialize(writer, studentsgrades);
            }
        }

现在,当我关闭程序时,会创建 StudentsGrades.JSON 文件。

我想知道如何在程序关闭后重新打开后将此信息加载回程序内存。

注意:我是 JSON 的新手。请原谅我对 JSON 的工作原理缺乏了解。

谢谢

重新打开应用程序时调用此方法:

public void LoadJson(string filePath="@StudentsGrades.JSON")
{
    using (StreamReader r = new StreamReader(filePath))
    {
        string json = r.ReadToEnd();
        List<Students> Students = JsonConvert.DeserializeObject<List<Students>>(json);
    }
}

注意:您应该使用 Newtonsoft.Json