Работа с 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) До скорого!