Новини високих технологій
» » Формат JSON: опис, приклад

Формат JSON: опис, приклад

2-05-2017, 21:16
2 461
Змінні, масиви та об'єкти - звична і зручна форма подання даних. Описувати дані прийнято в мові браузера jаvascript, що робити не обов'язково в мові сервера PHP. Формат JSON дозволяє узагальнити їх в одне ціле і не робити акцент на мові програмування. При цьому дані перетворюються у пари: "ім'я = значення". Значення кожної з них також може бути сукупністю таких пар.
Прийнято JSON асоціювати з фігурними дужками і об'єктами jаvascript. Останнє цілком обґрунтоване, оскільки формат JSON = jаvascript Object Notation. В останні особливо динамічні роки багато що змінилося. Що створювалося заради конкретної мети, часто приносило несподівані плоди або відкривало нові горизонти.


Обмін даними: браузер - сервер

Технологія AJAX стала традиційною, звичайне оновлення сторінки цілком перестало користуватися популярністю. Відвідувач, відкриваючи сайт, ініціює серію часткових обмінів даними, коли ті чи інші сторінки змінюються тільки в тому місці, яке актуально.
Вважається, що поява JSON пов'язано з використанням саме AJAX, але насправді асоціативні масиви jаvascript і його об'єктна нотація (особливості синтаксису опису і використання об'єктів) мають набагато більше родинне відношення до JSON, ніж обмін даними між браузером і сервером. Так як контент сторінок сучасних сайтів дійсно став «масивним» (об'ємним), то і ефективність формату для обміну даними набула особливого значення. Не можна сказати, що JSON став новим поданням даних, але те що він давно був елементом синтаксису jаvascript, має істотне значення.


Використання кирилиці в іменуванні змінних - дуже несподіване явище (нонсенс), але це працює в останніх версіях Chrome, Firefox і, навіть, в Internet Explorer 11.

Кирилиця і JSON

Зрозуміло, використовувати це зовсім несподіване явище не варто, пригадуючи, як легко значення змінних, записані російськими літерами, перетворюються в кракозябры: що тут говорити про імена, особливо зовнішні. Сумнівно, що ініціативу в кириличних іменах підтримає зовнішнє оточення браузера, з яким йому постійно доводиться мати справу. Але цей факт заслуговує уваги з тієї простої причини, що формат JSON - це можливість писати імена і значення так, як завгодно розробнику. Це принципово, оскільки в кожній задачі опис галузі застосування так, як вона цього вимагає, істотно спрощує налагодження і зменшує кількість помилок. Не важливо, яке саме мало під собою підставу синтаксичне нововведення - JSON, важливо, що воно дало законне право і реальну можливість поставити відповідність: "будь-яке ім'я = будь-яке значення".
Треба віддати належне мові jаvascript: те, що передбачено синтаксисом, не зобов'язує розробника і нічого йому не нав'язує. Розробник вільно використовує синтаксис мови для оптимального формування моделі даних і алгоритму їх використання.

PHP і JSON

Приймаючи дані у форматі JSON, сервер (за допомогою PHP, зокрема) надає можливість обробляти їх як є і повертати назад в браузер результат в аналогічному форматі. Вихідний масив PHP:
$cJSON = array ("a"=> "alfa", "b"=> "beta", "g"=> "gamma"). Перетворення в формат JSON для передачі в браузер: $cJS = json_encode($cJSON ). Результат: {"a":"alfa","b":"beta","g":"gamma"}. Допускається зображена на фото вкладеність.
Формат JSON: опис, приклад
Тут сформований масив був доданий новим елементом «сам у себе» з автоматичним індексом "0", а потім ще раз з вказаним індексом "z". Зворотна функція - json_decode() виконує перетворення рядка JSON в масив PHP. Аналогічних результатів можна досягти, маніпулюючи функціями PHP: implode() і explode(). У деяких випадках цей варіант кращий.

Рівень вкладеності

Елементи можуть бути вкладені один в одного як на стороні браузера, так і на стороні сервера. На практиці формат JSON (опис стандарту RFC 4627) надає значно більше 4 рівнів вкладеності, але не слід зловживати цією можливістю. Найкраще ніколи не виходити за межі розумної достатності, це робить код читабельним, спрощує його налагодження і розуміння іншими розробниками. JSON прийнято відносити до конструкцій даних, які простіше XML, зрозумілі одночасно і людям, і комп'ютерам. Це дійсно так, коли обсяг даних малий, а рівень вкладеності розробник вибрав грамотно. У всіх інших випадках вважати кількість дужок і розуміти структуру даних складно як на стороні браузера, так і на стороні сервера.

Файли JSON

Застосування JSON на практиці часто не обмежується доступною сприйняттю короткою рядком. Будь-які конструкції даних завжди носять прагматичний характер. При цьому JSON може ефективно застосовуватися як у реальних даних задачі (штат підприємства), так і для реалізації тимчасових даних (кеш об'єкта).

Штат підприємства і JSON-формат: приклад

Зазвичай запис про одну людину - це прізвище, ім'я, по батькові, рік народження, спеціальність, освіта, і ще кілька простеньких значень. Навіть в особливо вимогливих компаніях запис про одну людину не буде перевищувати десятка-двох полів. Це доступно сприйняттю і може бути поміщено у рядок бази даних.
Якщо в компанії працює кілька людей - це одне, але якщо десятки тисяч - це зовсім інше. Можна продовжувати використовувати базу даних, але її зберігання у вигляді файлу виглядає практичніше і доступними для використання.
Формат файлу JSON - це звичайний текстовий файл. Випадок зі штатним розкладом, куди не йшло. Прочитати його завжди можна. Відкрити і змінити також доступно в будь-якому текстовому редакторі, який не має звички додавати свою службову інформацію у вміст файлу. Взагалі, *.json - це чистий текст як всередині браузера, так і всередині файлу - рядок. На фото представлений кеш об'єкта, що формує картинку, приклад.
Це приклад змісту файлу, сформованого сайтом, що надає послугу кольоровий об'ємної друку на кружках і керамічних виробах. Природно, вирішити, маючи такий JSON-формат, ніж відкрити його, дійсно проблематично. Однак у цьому і подібних випадках проблем з читанням файлу не виникає: PHP читає файл, розбирає його і передає в браузер. Змінені відвідувачем дані повертаються на сервер і записуються назад.
У такому варіанті використання файл виступає як змінна, яка зберігається поза коду. При необхідності, мінлива отримує значення з файлу, а якщо вона буде змінена відвідувачем діалозі, передбаченому сайтом, то всі зміни запишуться як є. Немає необхідності читати і перевіряти вміст файлу. JSON часто використовується для зберігання і використання службової інформації - це не штатний розклад, його не обов'язково бачити ні розробнику, ні відвідувачу сайту.

XML, JSON

"Всьому свій час" - класичне знання, прийняте за аксіому ще до появи програмування. "Ні що не з'являється просто так", - це теж було до того, як людина написав першу осмислену програму на штучному мові.
Формати даних з'являються від реальної потреби і ґрунтуються на досягнутих знаннях. У HTML - своя стезя, у XML - своя дорога, а JSON - це об'єктна логіка jаvascript, розширена на інші мови. Порівнювати одне з іншим не найкраще заняття. Кожному своє. XML чудово справляється зі своїми завданнями і йти в історію явно не збирається. А JSON використовувався і до 2006 року, просто не кожен розробник вважав своїм обов'язком декларувати ті чи інші варіанти представлення своїх даних. Були випадки в практиці, коли на бэйсике були написані програми, не використовують JSON як такої, але прекрасно зберігають пари "ім'я = значення" і надають їх у розпорядження потрібне алгоритмам в потрібний час.

Спецсимволи («`», «~», «|», ) і формати даних

Звичка працювати з асоціативними масивами і об'єктами на jаvascript робить використання JSON природним і зручним. Це дійсно відмінний формат, але вміння розділяти і з'єднувати, маніпулюючи рядками і масивами, має куди більш глибинні корені.
Функції join/split мови jаvascript і implode/explode мови PHP дозволяють зручно та ефективно використовувати як формати даних XML, JSON, так і власний варіант. Останній часто оптимальніше, а перші два ідеально підходять для варіантів загального користування. Якщо йде передача інформації іншим розробнику, сервера, у файл або в базу даних, краще XML, JSON не знайти. З ними працюють, тому передача/прийом інформації не потребує коментарів.

Використання JSON в Android

Читання і запис даних у форматі JSON в Android - не тільки норма речей, але і безліч об'єктів, орієнтованих на роботу саме з таким форматом даних. Багато хто пов'язує феноменальний успіх соціальних мереж з тим, що члени і відвідувачі відповідних сайтів (Facebook, LinkedIn, Twitter, ) витягують вигоду з опублікованих там матеріалів.
При цьому використовується саме формат JSON. Можливо, це так і є, але питання не в феноменальності соцмереж, а в тому що дійсно подання інформації у форматі "ім'я = значення" зручно як для програмування, так і для використання. На відміну від суворого і закомплексованого «XML» це дійсно людино-зручний формат.

Асоціативні масиви

Склалося так, що змінні слід описувати (jаvascript) або хоча б вказувати початкове значення (PHP). В обох випадках змінна може змінити свій тип дуже легко. При необхідності мова виконує це перетворення автоматично.
Але чому б змінної не змінювати своє ім'я, не з'являтися в ході виконання алгоритму і не зникати, коли потреба в ній відпаде? Асоціативні масиви дозволяють вирішити цю проблему, але тоді при використанні таких відносно динамічних змінних, ім'я масиву і відповідні синтаксичні конструкції будуть слідувати до місця їх застосування. Особливо ця обставина яскраво виражено на PHP, але з цим можна миритися, як, втім, з символом «$» імені змінної та комбінацією «$this->» всередині об'єкта. Програмуючи одночасно на jаvascript і PHP, спочатку дійсно дивуєшся, як всі відрізняється, але потім все стає таким звичним і природним

Асоціативний масив -> JSON

У цьому прикладі за допомогою бібліотеки PHPOffice/PHPWord створюється документ *.docx, і масив aProperties містить властивості цього документу (автор, компанія, назву, категорія, дата створення).
Другий масив містить дані по сторінці: орієнтація (альбомна або звичайна); розміри по вертикалі і горизонталі; відступи (поля зліва, зверху, знизу, праворуч); колонтитули.
Формування документу виконується на сервері, де встановлена бібліотека PHPOffice/PHPWord. На сайті передбачено управління значеннями цих масивів за допомогою jаvascript. Результат у форматі JSON повертається назад на сервер і використовується в алгоритмах на PHP, в його конструкціях, тобто в масивах.

Динамічні змінні

Формат JSON вирішує проблему динамічних змінних. Тут можна створювати, змінювати і видаляти змінні без зайвих синтаксичних нагромаджень. Це красиво виглядає і використовується jаvascript.
У цьому прикладі функція GetOjInfo () вибирає ім'я значення і значення об'єкта. Спочатку об'єкт JSON-рядки, присвоєної змінної ojInfo, володіє трьома елементами: Name, age і work. Трохи пізніше додається змінна Status.
Після першого оператора delete рядок ojInfo втрачає елемент age, після другого delete - елемент work. Якщо припустити, що дана рядок є добірка змінних, які мають певний сенс, то за допомогою JSON можна реально створювати, змінювати та видаляти будь-які їх набори поза межами операційного поля (синтаксису) опису і обробки мови jаvascript. Формат JSON на такий варіант не був розрахований, але таке можливо, практично і зручно.
Цікаво по темі
Докладно про те, як видати собі командний блок в «Майнкрафт»
Докладно про те, як видати собі командний блок в «Майнкрафт»
В даному матеріалі ми розглянемо, як видати собі командний блок в «Майнкрафт». При створенні карти...
Формат JSON: приклад і опис: SYL.ru
Формат JSON: приклад і опис: SYL.ru
JSON - абревіатура від Java Script Object Notation, яка являє собою формат, який використовує текст...
Математика від JavaScript Math
Математика від JavaScript Math
Об'єкт Math мови jаvascript реалізує практичний набір математичних функцій. Складні розрахунки можна виконувати всередині браузера, не
Стек JavaScript push/pop
Стек JavaScript push/pop
Стекова організація даних - одна з найдавніших в програмуванні. Останнім прийшов, першим пішов - просто ідеальна конструкція не тільки для
JavaScript, масиви: опис
JavaScript, масиви: опис
jаvascript – сучасна мова програмування, він унікальний у частині синтаксису і семантики. Має специфіку...
Javascript Array для збереження необмеженої кількості змінних
Javascript Array для збереження необмеженої кількості змінних
Логічно масив займає проміжне положення між змінними і об'єктами. Практично не слід надавати особливого значення словам. У програмі є змінні і код.