Время прочтения: 2 мин.
JSON — простой, основанный на использовании текста, способ хранить и передавать структурированные данные. Сегодня рассмотри, как попросить Json у сайта и что с ним делать?
Сначала несколько определений, позаимствованных мною с просторов Интернета:
Сериализация — это процесс перевода структуры данных в последовательность битов, или же в другую структуру данных, которую удобно хранить, передавать (этот процесс в статье подробно мы не будем рассматривать)
Десериализация — это обратный процесс. Процесс преобразования сериализованных данных в структуру данных.
Теперь рассмотрим практический пример:
На первом этапе в студии из NuGet скачиваем — Newtonsoft.Json, указываем в поиске — Json, находим — Newtonsoft.Json (его мы и будем использовать)
Затем прописываем — using Newtonsoft.Json.Linq;
Теперь нам необходимо найти страницу, с которой берем json (то есть берем страницу, где только json, и дальше выбираем один из вариантов):
- Для тех, кто старается сделать быстро: копируем весь текст json со страницы, переходим на специальный сайт, который экономит наше время тем, что строит за нас классы (например — http://json2csharp.com/#), вставляем json на этом сайте. И одним нажатием на кнопку – получаем результат (его и копируем в студию).
Как можно улучшить выгрузку:
- Проверить страницы с json и дописать переменные, если их не хватает
- Проверить название классов (часто встречается, что несколько классов с одним именем, если разные страницы разбираем в одной программе)
2. Для тех, кто желает погрузиться в разработку:
создаете открытый класс
public class Data
{
}
Делаете описание класса с наймингами, как в Json и получаем то же самое, что и в первом случае:
{
public int a { get; set; }
public string b { get; set; }
public double c { get; set; }
public List<другойКласс> d { get; set; }
}
3. Если информации не много, то классы можно не использовать.
Дальше получаем текст и вставляем его в объект jsona:
JObject jObject = JObject.Parse(Text);
1. Если выбрали 3, то можно указать путь и конвертнуть в тот тип данных, который нужен:
Convert.ToInt16(jObject["data"]["data2"])
2. Если выбрали 1 или 2 вариант, то мы производим десериализацию json в list,
List<Data> list = jObject.ToObject<List<Datum>>();
Кстати, тут тоже можно указывать путь: jObject["data"]["data2"].ToObject<List<DeveloperAll>>();
Вот такими методами мы «подружили» Json и C#.