static void Main(string[] args) { var groups = new List <Group>(); var students = new List <Student>(); for (int i = 0; i < 10; i++) { groups.Add(new Group(i, $"Group{i}")); } for (int i = 0; i < 300; i++) { var student = new Student(Guid.NewGuid() .ToString() .Substring(0, 5), i % 100) { Group = groups[i % 9] }; students.Add(student); } Console.WriteLine("bin"); var binaryFormatter = new BinaryFormatter(); using (var file = new FileStream("groups.bin", FileMode.OpenOrCreate)) { binaryFormatter.Serialize(file, groups); } using (var file = new FileStream("groups.bin", FileMode.OpenOrCreate)) { var newGroups = binaryFormatter.Deserialize(file) as List <Group>; if (newGroups is not null) { foreach (var group in newGroups) { Console.WriteLine($"{group}"); } } } Console.WriteLine("xml"); var xmlSerializer = new XmlSerializer(typeof(List <Group>)); using (var file = new FileStream("groups.xml", FileMode.OpenOrCreate)) { xmlSerializer.Serialize(file, groups); } using (var file = new FileStream("groups.xml", FileMode.OpenOrCreate)) { var newGroups = xmlSerializer.Deserialize(file) as List <Group>; if (newGroups is not null) { foreach (var group in newGroups) { Console.WriteLine($"{group}"); } } } Console.WriteLine("json"); using (var file = new FileStream("students.json", FileMode.OpenOrCreate)) { JsonSerializerSettings settings = new JsonSerializerSettings() { Formatting = Formatting.Indented }; var jsonConverter = JsonConvert.SerializeObject(students, settings); file.Write(Encoding.UTF8.GetBytes(jsonConverter), 0, jsonConverter.Length); } using (var file = new FileStream("students.json", FileMode.OpenOrCreate)) { JsonSerializerSettings settings = new JsonSerializerSettings() { Formatting = Formatting.Indented }; byte[] array = new byte[file.Length]; file.Read(array, 0, array.Length); var newStudents = JsonConvert.DeserializeObject <List <Student> >(Encoding.UTF8.GetString(array), settings); foreach (var student in newStudents) { Console.WriteLine($"{student.Name}({student.Age})"); } } Console.ReadKey(); }
static void Main(string[] args) { //json БЫСТРЫЙ, НО МЕНЕЕ НАДЕЖНЫЙ //soap не работает с List, БОЛЕЕ НАДЕЖНЫЙ //xml не сериализует private var groups = new List <Group>(); var students = new List <Student>(); for (int i = 0; i < 10; i++) { groups.Add(new Group(i, "Группа " + i)); } for (int i = 0; i < 300; i++) { var student = new Student(Guid.NewGuid().ToString().Substring(0, 5), i % 100) { Group = groups[i % 9] }; students.Add(student); } //var binFormatter = new BinaryFormatter(); //using(var file = new FileStream(@"D:\11\test\groups.bin", FileMode.OpenOrCreate)) //{ // binFormatter.Serialize(file, groups); //} //using (var file = new FileStream(@"D:\11\test\groups.bin", FileMode.OpenOrCreate)) //{ // var newGroups = binFormatter.Deserialize(file) as List<Group>; // if(newGroups != null) // { // foreach(var group in newGroups) // { // Console.WriteLine(group); // } // } //} //Console.WriteLine(); //var soapFormatter = new SoapFormatter(); //using (var file = new FileStream(@"D:\11\test\groups.soap", FileMode.OpenOrCreate)) //{ // soapFormatter.Serialize(file, groups.ToArray()); //} //using (var file = new FileStream(@"D:\11\test\groups.soap", FileMode.OpenOrCreate)) //{ // var newGroups = soapFormatter.Deserialize(file) as Group[]; // if (newGroups != null) // { // foreach (var group in newGroups) // { // Console.WriteLine(group); // } // } //} //Console.WriteLine(); //var xmlFormatter = new XmlSerializer(typeof(List<Group>)); //using (var file = new FileStream(@"D:\11\test\groups.xml", FileMode.OpenOrCreate)) //{ // xmlFormatter.Serialize(file, groups); //} //using (var file = new FileStream(@"D:\11\test\groups.xml", FileMode.OpenOrCreate)) //{ // var newGroups = xmlFormatter.Deserialize(file) as List<Group>; // if (newGroups != null) // { // foreach (var group in newGroups) // { // Console.WriteLine(group); // } // } //} var jsonFormatter = new DataContractJsonSerializer(typeof(List <Student>)); using (var file = new FileStream(@"D:\11\test\students.json", FileMode.Create)) { jsonFormatter.WriteObject(file, students); } using (var file = new FileStream(@"D:\11\test\students.json", FileMode.Open)) { var newStudents = jsonFormatter.ReadObject(file) as List <Student>; if (newStudents != null) { foreach (var student in newStudents) { Console.WriteLine(student); } } } Console.ReadLine(); }