Размер JSON ответа API: формула и калькулятор
- Размер JSON в байтах = Σ (ключ + значение) + overhead (кавычки, запятые, скобки) ≈ 1.35–1.5 от суммы длин строк в UTF-8.
- Одна лишняя пара кавычек добавляет 2 байта, пробел — 1 байт. Минимизируйте ключи и форматирование.
- Полезная нагрузка в JSON не должна превышать 10 МБ (рекомендация REST API), но лучше держать < 500 КБ.
- Онлайн-калькулятор и CSV/JSON-конвертеры экономят часы ручного подсчёта.
- Как считается размер JSON (торетическая формула)
- Пошаговый расчёт на реальном примере (2026)
- Почему лучше не полагаться на ручной подсчёт: частые ошибки
- Как оптимизировать JSON ответ: уменьшаем размер в 2 раза
- Инструменты для конвертации и анализа JSON (2026)
- Когда размер JSON критичен (практические кейсы)
- Как отладить проблему с размером JSON (пошагово)
- Правила хорошего тона при проектировании JSON API (2026)
Как считается размер JSON (торетическая формула)
Размер JSON в байтах = sum(длина_ключа_в_UTF8 + длина_значения_в_UTF8) + overhead. Overhead включает:
- кавычки вокруг ключей и строковых значений — 2 байта на каждый ключ и каждое строковое значение;
- двоеточие между ключом и значением — 1 байт;
- запятые между элементами — 1 байт на разделитель;
- фигурные/квадратные скобки — для объекта/массива 2 байта (откр + закр).
Для чисел и bool кавычки не нужны, overhead меньше. В UTF-8 кириллические символы занимают 2 байта, латиница и цифры — 1 байт. Пример: ключ "name" (4 латинских) = 4 байта, значение "Сергей" (6 кириллических) = 12 байт. С overhead: кавычки (2+2=4), двоеточие (1), итого 4+12+4+1 = 21 байт.
Пошаговый расчёт на реальном примере (2026)
Допустим, API возвращает массив из 10 пользователей с полями: id, name, email, age. Каждое поле:
- id (число, 4 разряда) — 4 байта, overhead нет;
- name (строка, средняя русская — 10 букв) — 20 байт (UTF-8), + 2 кавычки, +1 двоеточие = 23;
- email (строка, в среднем 20 латинских) — 20 байт, +3 = 23;
- age (число, 2 цифры) — 2 байта, overhead 1 (двоеточие) = 3.
Сумма на один объект: скобки {} = 2, запятые между полями (3 шт.) = 3, итого: 4+23+23+3 + 2 + 3 = 58 байт. Массив из 10 объектов: скобки [] = 2, запятые между объектами (9) = 9, итого 10*58 + 2 + 9 = 591 байт. С отступами (pretty print) добавится ~20% пробелов. Реальный ответ ~800 байт.
Почему лучше не полагаться на ручной подсчёт: частые ошибки
- Путаница между string и number: строка '0' весит 3 байта (0 + 2 кавычки), число 0 — 1 байт.
- Неучтённые пробелы и табуляции: в production почти всегда minified, но после сериализации могут добавиться.
- Подсчёт длины в символах, а не байтах: кириллица — 2 байта на символ, эмодзи — 4 байта.
- Забывают про overhead массивов: каждый открывающий/закрывающий символ — 1 байт.
Используйте Калькулятор размера JSON ответа API — он учтёт все нюансы.
Как оптимизировать JSON ответ: уменьшаем размер в 2 раза
- Сокращайте ключи: "user_name" → "un", "first_name" → "fn". Если клиент известен — используйте маппинг.
- Не форматируйте: отключите pretty print в production, экономия ~20%.
- Используйте массивы вместо объектов: если поля всегда одинаковы, массив значений экономит ключи.
- Удаляйте null и пустые строки: не отправляйте поля с null — клиент может использовать default.
- Выбирайте правильный тип данных: дату лучше передавать Unix timestamp (число) вместо ISO-строки.
После оптимизации проверяйте утилитами или калькулятором размера JSON.
Инструменты для конвертации и анализа JSON (2026)
Кроме калькулятора, полезны конвертеры для подготовки тестовых данных:
- CSV в JSON — быстро перевести табличные данные в JSON для API.
- JSON в CSV — экспорт ответа для анализа в Excel.
- JSON в XLSX — если нужен формат .xlsx напрямую.
- XLSX в JSON — подготовить данные из Excel для API.
✅ Чек-лист оптимизации JSON ответа
0 из 8
Когда размер JSON критичен (практические кейсы)
- Лимиты облачных функций: AWS Lambda возвращает до 6 МБ, GCP Cloud Functions — до 10 МБ. Превышение = ошибка 413.
- Мобильный трафик: 1 МБ в роуминге может стоить $10. Каждый килобайт на счету.
- Время TTFB: при скорости 1 Мбит/с (сельская местность) передача 500 КБ занимает ~4 секунды.
- Парсинг на клиенте: большой JSON тормозит UI, особенно на старых устройствах.
Всегда сжимайте ответ gzip — это уменьшает размер в 5-10 раз. Но помните, что размер в байтах до сжатия важен для лимитов API и расчёта трафика.
Как отладить проблему с размером JSON (пошагово)
- Получите реальный ответ от API (через curl или Postman).
- Проверьте длину в байтах:
curl -s -o /dev/null -w '%{size_download}' https://api.example.com/data. - Сравните с расчётным размером через калькулятор.
- Проанализируйте структуру: используйте jsonlint.com для визуализации.
- Примените оптимизации из раздела выше, повторите замер.
Если размер превышает ожидаемый, ищите дублирование данных или необязательные поля.
Правила хорошего тона при проектировании JSON API (2026)
- Версионируйте эндпоинты: /v1/users — чтобы можно было ломать формат без ущерба.
- Используйте код состояния 206 Partial Content для частичных ответов (Range).
- Пагинация обязательна: возвращайте первые 50-100 записей и ссылки на следующие.
- Избегайте глубокой вложенности: больше 3 уровней усложняет парсинг и увеличивает размер.
- Стандартизируйте ошибки: единый формат {code, message, details}.
Соблюдение этих правил упрощает жизнь и вам, и клиентам.
🧮 Посчитайте сами — инструменты по теме
🧭 Разделы по теме
Частые вопросы
Сколько весит JSON с одним полем 'name'='Иван'?
Ключ 'name' (4 байта), значение 'Иван' (8 байт), кавычки (4), двоеточие (1), фигурные скобки (2). Итого 4+8+4+1+2 = 19 байт.
Как посчитать размер JSON онлайн бесплатно?
Используйте онлайн-калькулятор: вставьте JSON в поле ввода и нажмите 'Рассчитать'. Сервис покажет точный размер в байтах и килобайтах.
Влияют ли отступы в JSON на размер?
Да. Каждый отступ (пробел или табуляция) добавляет байты. В production всегда отключайте pretty print: экономия ~20% размера.
Почему JSON с кириллицей весит больше?
В кодировке UTF-8 кириллический символ занимает 2 байта, латинский — 1 байт. Поэтому русские строки увеличивают размер.
Как уменьшить размер JSON с массивом объектов?
Замените массив объектов на массив массивов с общей шапкой ключей. Например, [['Иван', 25], ['Мария', 30]] вместо [{'name':'Иван','age':25},...].
Какой максимальный размер JSON для API?
Рекомендуется не более 10 МБ (ограничение многих серверов). На практике для мобильных устройств старайтесь укладываться в 500 КБ.
Сжимает ли gzip размер JSON?
Да, gzip обычно сжимает JSON в 5-10 раз, но учитывайте, что лимиты API часто считают исходный размер. Всё равно используйте сжатие для передачи.
Как проверить размер JSON в curl?
Выполните: curl -s -o /dev/null -w '%{size_download}' https://api.example.com/data. Ответ в байтах.
Источники и нормативные документы
- Калькулятор размера JSON
- MDN: JSON
- RFC 8259 (JSON)