> Что такое 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); // Анна
// Обработка ошибки при некорректном JSON
try {
JSON.parse('{"name": "Анна",}'); // trailing comma
} catch (e) {
console.log(e.name); // SyntaxError
}
// Особенности stringify
const 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 - это не так.

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

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