> Что такое JSON (JavaScript)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Иннотех, Сбер, 1xbet
Стек: JavaScript
> Пример ответа
Короткий ответ
JSON (JavaScript Object Notation) - это текстовый формат обмена данными, основанный на синтаксисе объектов JavaScript. Он используется для передачи структурированных данных между клиентом и сервером, а также для хранения конфигураций. JSON поддерживает примитивные типы (строки, числа, булевы значения, null) и структуры (объекты и массивы). Главные особенности - человекочитаемость, лёгкость парсинга и независимость от языка программирования.
Подробное объяснение
JSON - это стандарт, описанный в RFC 8259. Несмотря на то что он выглядит как объект JavaScript, это самостоятельный формат. Ключевые правила:
- данные представлены в виде пар "ключ: значение";
- ключи всегда в двойных кавычках;
- строки - только в двойных кавычках (одинарные не допускаются);
- не поддерживаются комментарии, trailing commas, функции, undefined, NaN, Infinity;
- числа не могут содержать ведущие нули, но могут быть с плавающей точкой и экспонентой.
В JavaScript для работы с JSON есть два глобальных метода:
JSON.parse(string)- преобразует JSON-строку в объект JavaScript;JSON.stringify(value)- преобразует значение JavaScript в JSON-строку.
Эти методы учитывают особенности формата: JSON.stringify пропускает функции, undefined, символы, а также циклические ссылки (выбрасывает ошибку). JSON.parse строго проверяет синтаксис и выбрасывает SyntaxError при некорректном вводе.
На практике
Во frontend-разработке JSON используется повсеместно:
- ответы от REST API (обычно в формате JSON);
- хранение данных в localStorage (только строки, поэтому объекты сериализуются);
- конфигурационные файлы (например,
package.json,.eslintrc.json); - передача данных через WebSocket;
- обмен данными между микросервисами.
При работе с JSON важно помнить про типы: числа из JSON приходят как number, но большие числа (больше Number.MAX_SAFE_INTEGER) могут терять точность - для таких случаев используют строки или специальные библиотеки.
Пример кода
JAVASCRIPT// Сериализация объектаconst user = {name: 'Анна',age: 25,isAdmin: false,skills: ['JS', 'HTML'],address: null};const jsonString = JSON.stringify(user);console.log(jsonString);// {"name":"Анна","age":25,"isAdmin":false,"skills":["JS","HTML"],"address":null}// Парсинг строкиconst parsed = JSON.parse(jsonString);console.log(parsed.name); // Анна// Обработка ошибки при некорректном JSONtry {JSON.parse('{"name": "Анна",}'); // trailing comma} catch (e) {console.log(e.name); // SyntaxError}// Особенности stringifyconst obj = {method() {},value: undefined,[Symbol('id')]: 1};console.log(JSON.stringify(obj)); // {} - функция, undefined и symbol пропущены
Как отвечать на собеседовании
Начните с определения: "JSON - это текстовый формат для обмена данными, основанный на синтаксисе объектов JS". Затем кратко перечислите типы данных и правила синтаксиса. Упомяните методы JSON.parse и JSON.stringify. Если спросят глубже - расскажите про ограничения (отсутствие комментариев, функций, undefined) и про типичные проблемы (потеря точности больших чисел, циклические ссылки). Хорошо добавить пример из практики: "Когда получаю данные от API, я всегда оборачиваю JSON.parse в try/catch, потому что сервер может вернуть некорректную строку".
Что проверяет интервьюер
Интервьюер оценивает:
- понимание разницы между JSON и объектом JavaScript;
- знание синтаксических ограничений (кавычки, отсутствие trailing commas);
- умение объяснить, зачем нужна сериализация и десериализация;
- знание edge cases:
undefined, функции,NaN, циклические ссылки; - практическое использование методов
JSON.parseиJSON.stringify.
Для junior-уровня достаточно базовых знаний, но важно говорить уверенно и без путаницы.
Типичные ошибки
- утверждение, что JSON - это "то же самое, что объект JavaScript" (это не так, это отдельный формат);
- забывают про двойные кавычки для ключей и строк;
- говорят, что JSON поддерживает комментарии или одинарные кавычки;
- не знают, что
JSON.stringifyпропускает функции иundefined; - не упоминают обработку ошибок при
JSON.parse; - путают
JSON.parseиJSON.stringify(направление преобразования); - считают, что JSON можно использовать для передачи функций или
undefined- это не так.
> Похожие задачи по frontend
Что будет при обращении к переменной var до объявления в JavaScript
Что такое метод filter в JavaScript и как он работает
Какие структуры данных использовать для хранения параметров и результатов мемоизации в JavaScript
Почему в JavaScript переменная, объявленная через var, всплывает и инициализируется значением undefined?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью