Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 100 из 114 · 8 мин
Функции replacer и reviver, отступы space, метод toJSON, JSON.rawJSON и JSON.isRawJSON.
Номер заказа 12345678901234567890 после JSON превратится в …7000. Хе-хе.
У JSON есть тонкие настройки: что брать, как отступать, как читать даты и как вставить число «как есть».
JSON.stringify(v, replacer, space): replacer — массив разрешённых ключей или функция (key, value) => …; space — отступ для читаемости.const order = { id: 7, item: "Пенал", _secret: "x" };
console.log(JSON.stringify(order, ["id", "item"]));
console.log(JSON.stringify(order, (k, v) => (k.startsWith("_") ? undefined : v), 2));JSON.parse(text, reviver) — функция может превратить строки обратно в даты. Метод объекта toJSON() решает, что попадёт в JSON (так работает Date).const text = JSON.stringify({ at: new Date(Date.UTC(2026, 10, 2)) });
const back = JSON.parse(text, (k, v) => (k === "at" ? new Date(v) : v));
console.log(text, back.at instanceof Date);JSON.rawJSON() · JSON.isRawJSON()JSON.rawJSON("12345678901234567890") — значение, которое stringify вставит без изменений (большие числа без потери точности). isRawJSON — проверка.const id = 12345678901234567890n;
console.log(JSON.stringify({ id: JSON.rawJSON(id.toString()) }), JSON.isRawJSON(JSON.rawJSON("1")));BigInt в JSON — через JSON.rawJSON(String(big)), иначе stringify бросит ошибку.
Напиши toServer(order): JSON без полей, начинающихся с _ (через replacer-функцию), а BigInt-поле id вставь точным числом через JSON.rawJSON.
JSON.rawJSON — пока нетВыберите один ответ.
Что сделает replacer, вернувший undefined для ключа?
Выберите один ответ.
Что сделает JSON.stringify({ n: 1n })?
Проверяем состояние обучения…