> Как передаются массивы в 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 в веб-приложениях:
- HTTP-запросы: тело запроса (POST/PUT) содержит JSON-строку с массивом, заголовок
Content-Type: application/json - WebSocket: сообщения передаются как JSON-строки
- localStorage/sessionStorage: массивы сериализуются перед сохранением
- 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);// массив объектов// Передача в fetchfetch('/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
> Похожие задачи по frontend
В чем отличие среды исполнения JavaScript в браузере и на сервере
Как сделать приватный метод в JavaScript
Что такое Jest
Как в цикле for-in в JavaScript вывести только собственные ключи объекта без ключей прототипа
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью