Верховна Рада України
Портал відкритих даних

Формати даних – JSON

JSON (від англ. JavaScript Object Notation) – текстовий відкритий формат, оснований на Javascript представлені та призначений для обміну даними в Інтернет між сервером та клієнтом або сервером і сервером. Хоча він позиціонується, як незалежний від системи і мови програмування, частіше за все використовується за допомогою програм на Javascript, але як і інші текстові формати, легко читається людиною.

Найбільшу популярність JSON набув після створення інтерактивних веб-сторінок, дані до яких через API передавались під час взаємодії користувача з елементами інтерфейсу (т.з. технологія AJAX). За рахунок своєї лаконічності, на відміну від XML, простоті й швидкості використання саме в програмах на Javascript, широкими можливостями в серіалізації даних – рекурсивного перетворення в текстовий вигляд складних об’єктів, формат активно використовується для формування «на льоту» та передачі структур даних в Інтернет в різних інформаційних системах і сервісах.

Синтаксис JSON представляє собою текст у вигляді програмного коду Javascript, який описує кілька варіантів структур:

  1. масив в квадратних дужках (значення через кому),
  2. іменований масив (чи об’єкт) у фігурних дужках (пари ключ-значення, розділені двома крапками, через кому),
  3. просте значення (число, рядок, true, false, null),
  4. функцію.

Для перетворення формату JSON в об’єкт в пам’яті (десеріалізації) в Javascript використовується функція eval(), яка виконує завантажений в текстовий рядок програмний код.

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

Через нераціональне використання пам’яті і ресурсів в JSON краще працювати зі об’єктами будь-якою складністю, але не дуже великих розмірів, в швидкому режимі «запит-відповідь».



вгору