在程序C#的开头加载JSON数据

时间:2018-10-05 11:49:06

标签: c# json json.net console-application reload

我正在尝试将序列化的数据加载到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如何工作的知识。

谢谢

1 个答案:

答案 0 :(得分:2)

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

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