Шпаргалки
December 17, 2018

Работа с JSON на C#. Часть 1. Структура данных.

C#, как я уже неоднократно повторяю, часто используется в вебе. Также в вебе очень часто встречается JSON - формат передачи данных. Он очень удобен, ведь намного легче, быстрее и структурированее. Если вы работаете в вебе или просто хотите использовать JSON для хранения информации (пусть даже офлайн) то эти статьи будут вам очень кстати.


Что такое JSON?

JSON (JavaScript Objective Notation) - это формат передачи информации, такой как XML. Он самый распространенный в интернете, ведь сам по себе связан с самым популярным ЯП для веба и вообще - JavaScript. Примеры применения - передача информации с базы данных. Это, наверное, самый распространенный сценарий использования JSON. Он используется такими сервисами как ВКонтакте, Телеграмм, некоторые из сервисов Google, многие сайты Microsoft и др.

Чем он лучше XML?

XML довольно громоздкий (см. рисунок ниже) и не столь быстрый. Чтобы написать что-нибудь на XML надо постараться, а если данных много? У JSON такого нет. Он лаконичный и чистый. Также в нем можно даже хранить фотографии, гиф-изображения и прочее медиа!

Структура

Как видите в верхнем рисунке, структура у JSON очень даже понятна человеческому глазу. Если чтобы понять XML тебе надо немного "осмотреться", то с JSON ты определишься сразу. (ну, это субъективщина, конечно) В JSON есть несколько типов переменных:

  • Обычные переменные - просто данные с идентификатором (или именем) как и обычные, знакомые нам переменные. пишутся как [имя] : [значение]
  • Массивы - это просто массивы с несколькими данными, без названий. В программировании, как ни странно, их аналогами являются массивы. Пишутся как [имя] { [1], [2], [3] }
  • Объекты - это множество массивов и переменных. (Его вы могли наблюдать в Телеграмм API) В программировании их аналогами являются коллекции и объекты. Пишется как [имя] [ [а] { [1], [2], [3] }, [б] { [4], [5] }, [в]:[6] ]

JSON может быть как в строчном формате, так и в "красивой печати" (канонизированном/запарсенном виде) Для передачи или хранении, конечно, используется строчный, ведь он занимает мало места и может поместится в одну строковую переменную без переходов на новую строчку. (\n не в счет)

Вот пример строчного формата с информацией о мужчине по имени Андрей:

{ "Name":"Andrei", "Gender":"Male", "Age":23, "Hobbies":[{ "Sports": { "Tennis":true, "Football":false, "Basketball":false }, "Design":true, "Coding": { "Freelance":false, "Outsourcing":true, "Opensourcing":true }}]}

Вот то же самое, но в "красивой печати" (канонизированном) формате:

{
   "Name":"Andrei",
   "Gender":"Male",
   "Age":23,
   "Hobbies":[
      {
      "Sports":{
         "Tennis":true,
         "Football":false,
         "Basketball":false
      },
      "Design":true,
      "Coding":{
         "Freelance":false,
         "Outsourcing":true,
         "Opensourcing":true
      }
      }
   ]
}

Как видите они отличаются лишь отсутствием переходов на следующую строчку, однако для компьютера это огромная разница! Если человеческий мозг может легко определить куда поставить переход, даже если там имеется ошибка, и даже не вставляя их использовать данные, хоть и с трудом, то компьютеру без парсинга (т.е. вставка этих самых переходов по определенному алгоритму) этого сделать не получиться.

Просмотр JSON

А что делать человеку, если ему дали JSON в строковом формате и ему для использования необходимо его пропарсить? Для этого есть много сервисов. Про один из них я уже говорил в одном из прошлых уроков по созданию бота - это JSON Parser Online от Olivier Cuenot. Он, как я и многие другие считаю, самый простой и легкий парсер. Просто вписываешь, а он показывает. Также он выводит ошибки. Всё гениальное - просто! (у этого сервиса также есть и вторая, бета версия - вот она, она включается кнопкой "Try our beta!" в обычной версии)

Также в браузерах есть свои расширения для автоматического показа JSON на странице в "красивой печати" (канонизированном). Для разных браузеров они разные. Однако FireFox отличился от всех тем, что у него автоматически есть эта функция. Не зря же FireFox считают браузером для веб-разработчиков! (сама Mozilla этого и добивалась) Вот скриншот как он выглядит - без лишних деталей и при этом функционально.


Конец

На этом всё! В следующей статье я покажу несколько способов парсинга JSON с C#, так что если вам понравилась данная статья, хотите знать больше о JSON или просто вам нужно пропарсить данный формат, то обязательно напишите комментарий и подпишитесь на мой канал Телеграмм! (если этого ещё не сделали, конечно же) Удачи!