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

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

Змінні, масиви та об 'єкти - звична та зручна форма представлення даних. Описувати дані прийнято в мові навігатора JavaScript, що робити не обов 'язково в мові сервера PHP. Формат JSON дозволяє узагальнити їх в одне ціле і не робити акцент мовою програмування. При цьому дані перетворюються на пари: "" ім 'я = значення "". Значення в кожній з них також може бути сукупністю таких пар.

Прийнято JSON асоціювати з фігурними дужками та об 'єктами JavaScript. Останнє цілком обґрунтоване, оскільки формат JSON = Object Notation JavaScript. В останні особливо динамічні роки багато чого змінилося. Що створювалося заради конкретної мети, часто приносило несподівані плоди або відкривало нові горизонти.


Обмін даними: переглядач - сервер

Технологія AJAX стала традиційною, звичайне оновлення сторінки цілком перестало користуватися популярністю. Відвідувач, відкриваючи сайт, ініціює серію часткових обмінів даними, коли ті чи інші сторінки змінюються тільки в тому місці, яке актуальне.

Вважається, що поява JSON пов 'язана з використанням саме AJAX, але насправді асоціативні масиви JavaScript і його об' єктна нотація (особливості синтаксису опису і використання об 'єктів) мають набагато більш родинне відношення до JSON, ніж обмін даними між браузером і сервером.

Оскільки контент сторінок сучасних сайтів дійсно став "масивним" (об 'ємним), то й ефективність формату для обміну даними набула особливого значення. Не можна сказати, що JSON став новим поданням даних, але те що він давно був елементом синтаксису JavaScript, має істотне значення.

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

Кирилиця і JSON

Зрозуміло, використовувати це абсолютно несподіване явище не варто, пригадуючи, як легко значення змінних, записані російськими літерами, перетворюються на кракозябри: що тут говорити про імена, особливо зовнішні.

Сумнівно, що ініціативу в кириличних іменах підтримає зовнішнє оточення браузера, з яким йому постійно доводиться мати справу. Але цей факт заслуговує уваги з тієї простої причини, що JSON формат - це можливість писати імена і значення так, як завгодно розробнику. Це принципово, оскільки в кожному завданні опис області застосування так, як вона цього вимагає, істотно спрощує зневадження і зменшує кількість помилок.


Не важливо, яке саме мало під собою підставу синтаксичне нововведення - JSON, важливо, що воно дало законне право і реальну можливість поставити відповідність: "" будь-яке ім 'я = будь-яке значення "".

Треба віддати належне мові JavaScript: те, що передбачено синтаксисом, не зобов 'язує розробника і нічого йому не нав' язує. Розробник вільно використовує синтаксис мови для оптимального формування моделі даних та алгоритму їх використання.

PHP и JSON

Приймаючи дані у форматі JSON, сервер (за допомогою PHP, зокрема) надає можливість їх обробляти як є і повертати назад у браузер результат в аналогічному форматі. Вихідний масив PHP:

  • $cJSON = array (""a""=> ""alfa"", ""b""=> ""beta"", ""g""=> ""gamma"").

Перетворення на формат JSON для передачі на переглядач:

  • $cJS = json_encode($cJSON).

Результат:

  • {""a"":""alfa"",""b"":""beta"",""g"":""gamma""}.

Допускається зображена на фото вкладеність.

Тут сформований масив був доданий новим елементом "сам в себе" з автоматичним індексом "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 - це об 'єктна логіка JavaScript, розширена на інші мови. Порівнювати одне з іншим не найкраще заняття. Кожному своє.

XML чудово справляється зі своїми завданнями і йти в історію явно не збирається. А JSON використовувався і до 2006 року, просто не кожен розробник вважав своїм обов 'язком декларувати ті чи інші варіанти подання своїх даних.


Були випадки в практиці, коли на бейсику були написані програми, що не використовують JSON як такий, але прекрасно зберігають пари "" ім 'я = значення "" і надають їх у розпорядження потрібним алгоритмам у потрібний час.

Спецсимволи ("'," ауд "," ",...) і формати даних

Звичка працювати з асоціативними масивами та об 'єктами на JavaScript робить використання JSON природним і зручним. Це дійсно відмінний формат, але вміння розділяти і з 'єднувати, маніпулюючи рядками і масивами, має куди більш глибинні корені.

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

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

Читання і запис даних у форматі JSON в Android - не тільки норма речей, але і безліч об 'єктів, орієнтованих на роботу саме з таким форматом даних.

Багато хто пов 'язує феноменальний успіх соціальних мереж з тим, що члени і відвідувачі відповідних сайтів (Facebook, LinkedIn, Twitter,...) отримують вигоду з опублікованих там матеріалів.

При цьому використовується саме формат JSON. Можливо, це так і є, але питання не в феноменальності соцмереж, а в тому що дійсно подання інформації у форматі "" ім 'я = значення "" зручне як для програмування, так і для використання. На відміну від суворого і закомплексованого "XML" це дійсно людино-зручний формат.

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

Склалося так, що змінні слід описувати (JavaScript) або хоча б вказувати початкове значення (PHP). В обох випадках змінна може змінити свій тип дуже легко. При необхідності мова виконує це перетворення автоматично.

  • орієнтація (альбомна або звичайна);
  • розміри по вертикалі і горизонталі;
  • відступи (поля ліворуч, зверху, знизу, праворуч);
  • колонтитули.

Формування документа виконується на сервері, де встановлено бібліотеку PHPOffice/PHPWord. На сайті передбачено керування значеннями цих масивів за допомогою JavaScript. Результат у форматі JSON повертається назад на сервер і використовується в алгоритмах на PHP, в його конструкціях, тобто в масивах.

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

Формат JSON вирішує проблему динамічних змінних. Тут можна створювати, змінювати та вилучати змінні без зайвих синтаксичних нагромаджень. Це гарно виглядає і використовується в JavaScript.

У цьому прикладі функція GetOjInfo () вибирає назву значення та значення з об 'єкта. Спочатку об 'єкт JSON-рядка, присвоєного змінній ojInfo, має три елементи: Name, age и work. Трохи пізніше додається змінна Status.

Після першого оператора delete рядок ojInfo втрачає елемент age, після другого delete - елемент work. Якщо припустити, що даний рядок є збірка змінних, що мають певний сенс, то за допомогою JSON можна реально створювати, змінювати і видаляти будь-які їхні набори поза операційним полем (синтаксису) опису та обробки мови JavaScript.

Формат JSON на такий варіант не був розрахований, але таке можливо, практично і зручно.