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 — возможность частичной передачи данных (partial response) через параметры запроса, а также поддержка вложенных ресурсов без дополнительных запросов к серверу.

Парсинг 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 classы. Аннотация @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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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