Работа с JSON на C#. Часть 2. Хранение данных.
На прошлом уроке мы узнали что такое JSON, в чем его отличие от XML и разобрали его структуру. На этом уроке мы уже будем с ним работать. Пока что мы будем работать только с хранением данных в файле с форматом *.json
. Будем хранить в нем данные человека. Погнали!
Подготовка
Думаю создавать консольное приложение вы умеете, так что начну с установки библиотеки Newtonsoft.json. Нам нужен именно он, ведь для данной задачи он лучше всего подойдет, а делать свой велосипед никто не спешит.
Заходим в проект и жмем ПКМ по проекту в обозревателе решений и выбираем "Управление пакетами NuGet...". Там заходим во вкладку "Обзор" и находим пакет "Newtonsoft.Json" и потом устонавливаем его. Думаю с этим у вас проблемы не возникнут. (надеюсь)
Далее нам понадобится одна библиотека. Она нужна для использования файлов, т.е. их чтения, записи и создания. Чтобы это сделать вы должны в самом начале файла Program.cs
(там где много using
) вписать следующее:
using System.IO;
Так, проект мы подготовили, теперь приступаем.
Создание самих данных
Чтобы использовать JSON как хранитель данных сначала вам нужны эти самые данные. Но в каком виде их вписывать? В виде классов, конечно! Т.е. мы будем создавать класс, а его поля - это данные. Сейчас расскажу поподробнее.
Как я уже говорил, в JSON есть три типа данных: переменные, массивы и объекты. Однако при вписывании этих данных у нас немного другие "правила". (Но не беспокойтесь, наша библиотека Newtonsoft с этим справится) У наших классов есть эти типы: поля классов, массивы и объекты других классов. Они выглядят так:
public class Person { //вот поля (в данном случае свойства, ведь мы любим сахарок!) public string Name { get; set; } public int Age { get; set; } //вот массивы переменных (в нашем случае массив класса String) public string[] Hobbies { get; set; } //а вот объекты др. классов public Baggage baggages { get; set; } public Pet pets { get; set; } }
Как вы уже поняли, нам нужен классы Baggage
и Pet
:
public class Baggage { public int Weight { get; set; } public string Type { get; set; } } public class Pet { public string WhatsAnimal { get; set; } public string Name { get; set; } public int Weight { get; set; } }
Для преобразования объекта Person
в JSON формат мы используем метод SerializeObject
класса JsonConvert
. Вот:
static void Main(string[] args) { var myNeighbour = new Person { //просто вписываем значения полей как обычно Name = "Sergey", Age = 38, //создаем новый массив string с множеством стоковых данных и вложим его в переменную Hobbies Hobbies = new string[] {"Смотреть футбол", "Идти на работу", "Ссориться с женой"}, //создаем новый объектс класса Baggage/Pet со своими данными и вложим его в переменную baggages/pets baggages = new Baggage { Weight = 17, Type = "Чемодан" }, pets = new Pet { WhatsAnimal = "Кошка", Name = "Киса", Weight = 9 } }; string OurData = JsonConvert.SerializeObject(myNeighbour); //делаем из объекта myNeighbour строковые данные в формате JSON Console.WriteLine(OurData); Console.ReadKey(); }
Заметьте, что если вывести на экран OurData
, который является JSON в строчном формате, мы увидим (барабанная дробь) все данные в одной строке. Это нормально! Однако некоторые парсеры (уже не помню какие) делают немного иначе - они вставляют \n
и \t
в нужных местах так, чтобы при выводе они были в "красивой печати" (канонизированном виде).
Вот что мы увидим, если запустим программу
Конец!
На этом всё! В следующей статье я покажу вам как преобразовать данные с JSON в класс с данными и JSONNode! (от SimpleJSON.cs) До скорого!