🔶 Как быстро начать работу с JSON в C#



Рано или поздно вы начинаете задумываться о том, как сохранять состояние вашего приложения при закрытии или восстанавливать его состояние при запуске. Для этого нужно при закрытии "запомнить" нужные параметры, а при открытии их прочитать от куда-то (например, из файла) и восстановить значения соответствующих переменных.



Вторая задача, которая встаёт перед разработчиками – как передавать данные между разными приложениями. Например, у вас есть backend написанный на C# и требуется передать данные мобильному приложению написанному на языке Swift или Java.



Для того чтобы осуществить как первую, так и вторую идею требуется перевести структуру данных, описывающую некую модель, в битовую последовательность (часто говорят, сериализавать объект), а затем создать структуру данных из битовой последовательности (или десериализовать объект).



Для этих задач чаще всего используются форматы JSON и XML.

Пример:



Чтобы превратить данные в JSON-объект воспользуемся библиотекой Newtonsoft.Json для .NET



1️⃣ Добавляем библиотеку в свой проект:

для этого в терминале прописываем dotnet add package Newtonsoft.Json



2️⃣ Описываем модель, которую данных:



public class Worker

{

public int Age { get; set; }

public int Salary { get; set; }

public string FullName { get; set; }

}



3️⃣ Импортируем пространство имён:

using Newtonsoft.Json;



4️⃣ Создаём экземпляр Worker'а:

Worker worker = new()

{

Age = 32,

Salary = 123456,

FullName = "Иван Васильевич IV"

};



5️⃣ Сериализация данных:

string json = JsonConvert.SerializeObject(worker);



итог:

{

"Age" : 32,

"Salary" : 123456,

"FullName" : "Иван Васильевич IV"

}





▶️ Можно сохранить в файл или отправить по сети:

Пример сохранения в файл:

File.WriteAllText("data.json", json);



▶️ Можно прочитать из файла или скачать из сети:

Пример чтения из файла:

string data = File.ReadAllText("data.json");



6️⃣ Десериализация данных:

Worker w = JsonConvert.DeserializeObject<Worker>(data);



▶️ Распечатываем:

Console.WriteLine($"[{w.FullName} {w.Age} {w.Salary}]");



ps 99% Клиет-серверной архитектуры не обходятся без JSON'а, лучше изучить заранее



#json #dotnet #csharp