### Чтение CSV ``` using System.Globalization; using CsvHelper; using CsvHelper.Configuration; using (var reader = new StreamReader("./test.csv")) { using (var csv = new CsvReader( reader, CultureInfo.InvariantCulture)) { var records = csv.GetRecords(); foreach (var record in records) { Console.WriteLine("{0}, {1}", record.description, record.value); } } } public class Foo { public string description { get; set; } public double value { get; set; } } ``` Результат: ``` строка с пробелами, 123,15 строка с переносом строки, 456 ``` ### Запись в CSV ``` using System.Globalization; using CsvHelper; using CsvHelper.Configuration; // использую не стандартный формат var config = new CsvConfiguration( CultureInfo.InvariantCulture) { Delimiter = ";", HasHeaderRecord = false }; // создаю тестовые данные var records = new List { new Foo { description ="тест записи\nмногострочного текста", value = 12.34 }, new Foo { description = "просто, текст, с запятыми", value = 0 } }; using (var writer = new StreamWriter("./test3.csv")) using (var csv = new CsvWriter(writer, config)) { csv.WriteRecords(records); } public class Foo { public string description { get; set; } public double value { get; set; } } ``` Результат в файле: ``` "тест записи многострочного текста";12.34 просто, текст, с запятыми;0 ``` ### Newtonsoft.Json Сериализация ``` using Newtonsoft.Json; var person = new Person { name = "Имя", age = 18, date = "2024-03-07" }; string json = JsonConvert.SerializeObject( person, Formatting.Indented); Console.WriteLine(json); class Person { public string name { get; set; } public int age { get; set; } public string date { get; set; } } ``` Результат: ``` { "name": "Имя", "age": 18, "date": "2024-03-07" } ``` ### Сериализация JSON. DataContractJsonSerializer. ``` using System.Runtime.Serialization; using System.Runtime.Serialization.Json; var PersonList = new List() { new Person {name="Иванов", age=25, date=new DateTime(2021,1,1)}, new Person {name="Петров", age=35, date=new DateTime(2021,1,2)} }; // создаем объект сериализатора, указав, что на входе // будет МАССИВ объектов Person var Serializer = new DataContractJsonSerializer(typeof(Person[])); using (var streamWriter = new StreamWriter("test1.json")) { Serializer.WriteObject( streamWriter.BaseStream, // Преобразуем список (List) объектов в МАССИВ PersonList.ToArray() ); } [DataContract] internal class Person { [DataMember] public string name; [DataMember] public int age; [DataMember] public DateTime date; } ``` Результат в cозданном JSON файле: ``` [{"age":25,"date":"\/Date(1609448400000+0300)\/","name":"Иванов"},{"age":35,"date":"\/Date(1609534800000+0300)\/","name":"Петров"}] ``` ### Десериалзиаця JSON. DataContractJsonSerializer. ``` using System.Runtime.Serialization; using System.Runtime.Serialization.Json; var Serializer = new DataContractJsonSerializer(typeof(Person[])); using (var sr = new StreamReader("test1.json")) { var PersonList = (Person[])Serializer.ReadObject(sr.BaseStream); } [DataContract] internal class Person { // создаем приватную переменную для хранения даты private DateTime privateDate; [DataMember] public string name { get; set; } [DataMember] public string age { get; set; } // создаем ПРИВАТНОЕ СТРОКОВОЕ свойство и с помощью атрибутов меняем ему имя для сериализатора [DataMember(Name = "date")] private string StringDate { get { return privateDate.ToString("yyyy-MM-dd"); } set { // 2021-03-21 // 0123456789 privateDate = new DateTime( Convert.ToInt32(value.Substring(0, 4)), Convert.ToInt32(value.Substring(5, 2)), Convert.ToInt32(value.Substring(8, 2)) ); } } // публичное свойство "дата" скрываем от сериализатора [IgnoreDataMember] public DateTime date { get { return privateDate; } set { privateDate = value; } } } ``` ### Пример сериализации JSON. Newtonsoft.Json ``` using Newtonsoft.Json; Person person1 = new Person { Name = "Влад", LastName = "Анисимов", Age = 19, Birtday = new DateTime(2003, 02, 19).ToShortDateString().ToString() }; string json = JsonConvert.SerializeObject(person1, Formatting.Indented); Console.WriteLine(json); public class Person { public string Name { get; set; } public string LastName { get; set; } public int Age { get; set; } public string Birtday { get; set; } } ``` Результат: ``` { "Name": "Влад", "LastName": "Анисимов", "Age": 19, "Birtday": "19.02.2003" } ``` ### Пример десериализации JSON. Newtonsoft.Json ``` using Newtonsoft.Json; string json = @"{""Name"":""Влад"",""LastName"":""Иванов"",""Age"":19, ""Birthday"":""2003.02.18""}"; Person person1 = JsonConvert.DeserializeObject(json); Console.WriteLine(person1.Name); Console.WriteLine(person1.LastName); Console.WriteLine(person1.Age); Console.WriteLine(person1.Birthday); public class Person { public string Name { get; set; } public string LastName { get; set; } public int Age { get; set; } public string Birthday { get; set; } } ``` Результат: ``` Влад Иванов 19 2003.02.18 ```