JSON: що це таке, структура даних та принцип роботи

Автор: IT Sectr Опубліковано: 2026-03-08 Час читання: 8 хв

JSON (JavaScript Object Notation) — це текстовий формат обміну даними, заснований на синтаксисі об'єктів JavaScript. Він використовується повсюдно: від REST API та конфігураційних файлів до зберігання даних у базах та мобільних додатках. За даними офіційного сайту JSON, формат не залежить від мови програмування та підтримується практично всіма сучасними платформами. JSON став стандартом де-факто для передачі даних між клієнтом та сервером.

Головне

  • JSON — легкий текстовий формат для структурованих даних на основі синтаксису JavaScript
  • Шість типів даних — рядок, число, булевий, null, масив та об'єкт для будь-яких структур
  • Універсальність — підтримується всіма мовами програмування та платформами
  • REST API — основний формат для обміну даними у веб- та мобільних додатках
  • Читабельність для людини — простий синтаксис легко читається та редагується без інструментів

Що таке JSON?

JSON — це текстовий формат для представлення структурованих даних, заснований на синтаксисі JavaScript. Незважаючи на походження з JavaScript, формат повністю незалежний від мови — парсери та серіалізатори існують для всіх популярних мов програмування.

Історія JSON почалася на початку 2000-х, коли Дуглас Крокфорд виділив підмножину синтаксису JavaScript для обміну даними. У 2013 році формат був стандартизований як ECMA-404, а пізніше — як ISO/IEC 21778:2017. Назва розшифровується як JavaScript Object Notation.

Основна перевага JSON — мінімалістичний синтаксис. Для опису даних використовується всього шість типів: рядок, число, булевий, null, масив та об'єкт. Цього достатньо для представлення будь-яких структур даних, що використовуються в додатках.

Де використовується JSON

  • REST API — основний формат запитів та відповідей між сервером та клієнтом
  • Конфігураційні файли — package.json, tsconfig.json, .prettierrc
  • Бази даних — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • Мобільні додатки — зберігання налаштувань, кешування даних
  • Веб-технології — WebSocket, Server-Sent Events, localStorage

Синтаксис та типи даних JSON

Синтаксис JSON гранично простий: дані представлені парами ключ-значення, де ключ — це рядок у подвійних лапках, а значення — один із шести базових типів. Об'єкти заключаються у фігурні дужки, масиви — у квадратні. Рядки обов'язково використовують подвійні лапки, одинарні лапки недопустимі.

Числа в JSON можуть бути цілими або з плаваючою точкою, додатними або від'ємними, з експоненціальним записом. Булеві значення представлені літералами true та false, а відсутність значення — null. Масиви містять упорядкований набір значень будь-якого типу, включаючи вкладені масиви та об'єкти.

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "підтримка вкладеності"
  }
}
Тип Приклад Опис
Рядок «текст» У подвійних лапках, з escape-послідовностями
Число 42 Ціле, дробове, експоненціальне
Булевий true true або false — без лапок
null null Відсутність значення
Об'єкт {} Невпорядкований набір пар ключ-значення
Масив [] Упорядкований список значень

JSON у REST API

JSON є основним форматом обміну даними для REST API в мобільній та веб-розробці. Сервер надсилає JSON у тілі відповіді, клієнт — у тілі запиту. Стандартний заголовок Content-Type для JSON — application/json.

Сучасні REST API використовують JSON для передачі всіх типів даних: від простих списків до складних вкладених структур із зв'язками між сутностями. Клієнтська бібліотека (наприклад, Axios у JavaScript або Retrofit на Android) автоматично серіалізує та десеріалізує JSON, звільняючи розробника від ручного парсингу.

Важлива перевага JSON у REST API — можливість часткової передачі даних (часткова відповідь) через параметри запиту, а також підтримка вкладених ресурсів без додаткових запитів до сервера.

Парсинг JSON на мобільних платформах

Парсинг JSON на мобільних платформах виконується вбудованими засобами. Android використовує бібліотеки Gson від Google або Moshi від Square, iOS — протокол Codable з JSONDecoder. Кожна платформа надає зручні інструменти для перетворення JSON у нативні об'єкти та назад.

JSON на Android (Kotlin)

На Android популярний підхід з використанням Gson або Moshi. Достатньо визначити data class з анотаціями @SerializedName і викликати fromJson для десеріалізації. Бібліотека автоматично зіставляє імена полів у JSON з полями класу.

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

JSON на iOS (Swift)

На iOS використовується вбудований протокол Codable з JSONDecoder. Структура даних оголошується як struct з протоколом Codable, після чого JSON парситься одним рядком. JSONEncoder виконує зворотну серіалізацію — перетворює об'єкт у JSON для відправлення на сервер.

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON vs XML: порівняння форматів

JSON та XML — два основні формати для передачі структурованих даних. JSON виграє у простоті та продуктивності, XML — у строгості та валідації. Вибір між ними залежить від вимог проекту: для REST API частіше обирають JSON, для складних документів зі схемами — XML.

XML вимагає закриваючих тегів для кожного елемента, що збільшує розмір даних у 2-3 рази порівняно з JSON. При цьому XML підтримує простори імен, схеми XSD, атрибути та трансформацію XSLT, що робить його більш потужним для завдань документообігу та інтеграції корпоративних систем.

Характеристика JSON XML
Синтаксис Мінімалістичний, ключ-значення Теговий, відкриваючі та закриваючі теги
Розмір даних Компактний У 2-3 рази більше JSON
Типи даних Шість базових типів Тільки текст, типи через схеми
Валідація Немає вбудованої, через JSON Schema XSD — строга та зріла
Простори імен Немає Повна підтримка namespace
Швидкість парсингу Висока Нижча через складність

Приклади роботи з JSON

Приклади демонструють типові операції з JSON у мобільній розробці: парсинг API-відповідей, створення JSON для відправлення та обробку вкладених структур. Розуміння цих патернів необхідне для будь-якого розробника мобільних додатків.

Серіалізація об'єкта в JSON

На JavaScript JSON.stringify перетворює об'єкт у JSON-рядок. Другим аргументом можна передати масив ключів для вибіркової серіалізації або функцію-замінник. Третій аргумент задає відступи для форматування.

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

Парсинг вкладеного JSON

На Kotlin з бібліотекою Moshi вкладені JSON-об'єкти обробляються через вкладені data класи. Анотація @Json вказує ім'я поля в JSON, якщо воно відрізняється від імені властивості класу. Масиви представляються як List з типом елемента.

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: валідація структури

JSON Schema — це мова опису структури JSON-документа, аналогічна XSD для XML. За допомогою JSON Schema можна задати обов'язкові поля, типи даних, діапазони значень, патерни рядків та вкладену структуру. Валідація за схемою виявляє помилки даних до їх обробки в додатку.

JSON Schema широко використовується в OpenAPI (Swagger) для документування REST API, у формах валідації введення даних та в тестуванні. Файл схеми сам є JSON-документом, що дозволяє використовувати стандартні JSON-парсери для його читання. Існують онлайн-валідатори та бібліотеки для всіх популярних мов програмування.

У мобільній розробці JSON Schema застосовується для валідації відповідей від сервера на етапі тестування та для перевірки конфігураційних файлів. Бібліотеки на зразок network-validator на Android та json-schema-validator дозволяють вбудовувати валідацію прямо в процес розробки, запобігаючи помилкам на ранніх етапах.

Часті запитання

Які типи даних підтримує JSON?

JSON підтримує шість типів: рядок (у подвійних лапках), число (ціле та дробове), булевий (true/false), null, об'єкт (пари ключ-значення в {}) та масив (список значень у []). Цього достатньо для будь-яких структур даних у додатках.

Чи можна використовувати коментарі в JSON?

Ні, стандарт JSON не підтримує коментарі. Якщо потрібні коментарі, використовуйте JSON5 (розширений JSON) або додавайте поле з описом, наприклад «_comment»: «пояснення». Деякі інструменти, як VS Code, підтримують коментарі в конфігураційних JSON-файлах, але це нестандартне розширення.

Чим JSON відрізняється від JSONB у PostgreSQL?

JSONB — це бінарний формат зберігання JSON у PostgreSQL. На відміну від текстового JSON, JSONB швидше обробляється, підтримує індексацію (GIN-індекси) та гарантує унікальність ключів. При цьому JSONB займає більше місця на диску через додавання метаданих.

Як перевірити JSON на валідність?

Використовуйте JSONLint (jsonlint.com) для швидкої перевірки, вбудований JSON.parse() у JavaScript з try-catch, або IDE-плагіни. Валідація включає перевірку коректності лапок, закриття дужок та відповідності типів. Для складних схем використовуйте JSON Schema Validator.

Який максимальний розмір JSON-файлу?

Обмежень немає у специфікації JSON. На практиці розмір обмежений пам'яттю пристрою та можливостями парсера. Для мобільних додатків рекомендується не перевищувати 1-2 МБ на одну відповідь, а для великих даних використовувати пагінацію або потокову передачу.

Підсумки

  • JSON — мінімалістичний текстовий формат із шістьма типами даних для обміну структурованою інформацією
  • Незалежність від мови — парсери JSON існують для всіх популярних мов програмування
  • REST API використовує JSON як стандартний формат запитів та відповідей у мобільних додатках
  • Парсинг виконується вбудованими засобами: Gson/Moshi на Android, Codable на iOS
  • JSON компактніший за XML у 2-3 рази, але поступається Protobuf у продуктивності
  • Читабельність для людини — синтаксис легко читається та налагоджується без спеціальних інструментів
  • JSON Schema — додатковий інструмент для валідації структури та типів даних

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також