> Как передаются массивы в JSON (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Сбер

Стек: JavaScript

> Пример ответа

Короткий ответ

В JSON массивы передаются как упорядоченные списки значений в квадратных скобках, разделённые запятыми. Элементами могут быть строки, числа, объекты, другие массивы, boolean или null. При сериализации JavaScript-массива через JSON.stringify() он преобразуется в строку JSON-массива. При десериализации через JSON.parse() строка восстанавливается в массив. Важно: функции, undefined, Symbol и циклические ссылки не поддерживаются.

Подробное объяснение

JSON (JavaScript Object Notation) - текстовый формат обмена данными, основанный на синтаксисе JavaScript, но независимый от языка. Массивы в JSON - это структура для хранения упорядоченных коллекций значений.

Синтаксис JSON-массива:

  • Начинается с [ и заканчивается ]
  • Элементы разделяются запятыми
  • Пробелы и переносы строк игнорируются
  • Последний элемент не может содержать запятую

Допустимые типы элементов:

  • Строки (в двойных кавычках)
  • Числа (целые и с плавающей точкой)
  • Объекты (в фигурных скобках)
  • Массивы (вложенные)
  • Boolean (true/false)
  • null

Ограничения при передаче из JavaScript:

  • undefined заменяется на null или удаляется
  • Функции, Symbol, Map, Set не сериализуются
  • Циклические ссылки вызывают ошибку
  • Даты преобразуются в строки (формат ISO)
  • Infinity и NaN заменяются на null

На практике

При передаче массивов через JSON в веб-приложениях:

  1. HTTP-запросы: тело запроса (POST/PUT) содержит JSON-строку с массивом, заголовок Content-Type: application/json
  2. WebSocket: сообщения передаются как JSON-строки
  3. localStorage/sessionStorage: массивы сериализуются перед сохранением
  4. REST API: ответы сервера содержат JSON-массивы в теле ответа

Особенности для frontend:

  • Используйте JSON.stringify() с replacer для фильтрации полей
  • Для больших массивов учитывайте производительность сериализации
  • При работе с вложенными объектами проверяйте глубину вложенности
  • Для типизации используйте TypeScript интерфейсы

Пример кода

JAVASCRIPT
// Сериализация массива
const users = [
{ id: 1, name: "Alice", active: true },
{ id: 2, name: "Bob", active: false }
];
const jsonString = JSON.stringify(users);
// '[{"id":1,"name":"Alice","active":true},{"id":2,"name":"Bob","active":false}]'
// Десериализация
const parsedUsers = JSON.parse(jsonString);
// массив объектов
// Передача в fetch
fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(users)
});
// Обработка специальных значений
const mixed = [1, "text", null, undefined, () => {}];
JSON.stringify(mixed); // '[1,"text",null,null,null]'
// Вложенные массивы
const matrix = [[1, 2], [3, 4]];
JSON.stringify(matrix); // '[[1,2],[3,4]]'

Как отвечать на собеседовании

Начни с чёткого определения формата JSON-массива. Покажи понимание ограничений: какие типы данных не поддерживаются и как это влияет на передачу. Упомяни практические аспекты: сериализация/десериализация, работа с API, обработка ошибок. Если спросят про производительность, расскажи про альтернативы (MessagePack, Protocol Buffers) для больших объёмов данных.

Что проверяет интервьюер

  • Понимание базового синтаксиса JSON
  • Знание ограничений формата (типы данных, циклические ссылки)
  • Умение применять на практике (fetch, localStorage)
  • Осведомлённость о проблемах безопасности (XSS через JSON)
  • Способность объяснить разницу между JSON и JavaScript-объектами

Типичные ошибки

  • Использование одинарных кавычек или без кавычек для строк
  • Добавление запятой после последнего элемента
  • Попытка сериализовать функции, undefined или Symbol
  • Игнорирование обработки ошибок при JSON.parse()
  • Путаница между JSON-массивом и JavaScript-массивом
  • Неправильная работа с вложенными структурами
  • Забывание про Content-Type при отправке через fetch

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью