Загрузка данных JSON при запуске программы c # - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь загрузить сериализованные данные в файл 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 голосов
/ 05 октября 2018

при повторном открытии приложения вызовите этот метод:

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

...