← Назад к вопросам

Что может содержать в себе JSON?

1.3 Junior🔥 181 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что может содержать в себе JSON

JSON (JavaScript Object Notation) — это формат для обмена данными, который имеет строго определённый набор поддерживаемых типов данных. Несмотря на общепринятое мнение, JSON может содержать НЕ всё, что есть в JavaScript.

Основные типы данных в JSON

JSON поддерживает ровно 6 типов:

  1. Объекты — неупорядоченные коллекции ключ-значение
  2. Массивы — упорядоченные коллекции значений
  3. Строки — текстовые данные в двойных кавычках
  4. Числа — целые и вещественные
  5. Логические значенияtrue и false
  6. Null — отсутствие значения

Примеры валидного JSON

{
  "name": "Иван",
  "age": 30,
  "isActive": true,
  "address": null,
  "hobbies": ["чтение", "спорт", "путешествия"],
  "contact": {
    "email": "ivan@example.com",
    "phone": "+7-999-123-45-67"
  },
  "salary": 150000.50
}

Что НЕ может содержать JSON

Функции:

const obj = {
  name: "Мария",
  greet: function() { return "Hello"; }
};
JSON.stringify(obj); // {"name":"Мария"}

undefined:

const obj = { name: "Иван", age: undefined };
JSON.stringify(obj); // {"name":"Иван"}

Symbol:

const obj = { id: Symbol("id") };
JSON.stringify(obj); // {}

NaN и Infinity:

const obj = { value: NaN, limit: Infinity };
JSON.stringify(obj); // {"value":null,"limit":null}

Date объекты (напрямую):

const obj = { createdAt: new Date() };
JSON.stringify(obj);
// {"createdAt":"2026-03-26T10:30:00.000Z"}

Регулярные выражения:

const obj = { pattern: /\d+/g };
JSON.stringify(obj); // {"pattern":{}}

Комментарии:

{
  "name": "Иван"
}

Как правильно работать с ограничениями JSON

Для Date объектов используй ISO строки:

const data = {
  createdAt: new Date().toISOString(),
  updatedAt: Date.now()
};

Для функций используй replacer:

const obj = {
  name: "Иван",
  method: () => {}
};

const json = JSON.stringify(obj, (key, value) => {
  if (typeof value === 'function') {
    return '[Function]';
  }
  return value;
});

Для undefined используй replacer:

const obj = { name: "Мария", email: undefined };

const json = JSON.stringify(obj, (key, value) => 
  value === undefined ? null : value
);

Важные правила JSON

  • Ключи всегда в двойных кавычках
  • Только двойные кавычки для строк
  • Запятая после последнего элемента запрещена
  • Обязателен корневой элемент — объект или массив

Максимальный размер JSON

  • По спецификации — нет лимита
  • В браузере — зависит от памяти
  • На сервере — часто ограничено конфигурацией

JSON — это простой и строгий формат, идеальный для обмена данными между системами.