Spec-Zone.ru › JavaScript

JSON.isRawJSON()

Базовая линия Недавно доступно

Эта функция работает на последних устройствах и версиях браузеров. Эта функция может не работать на старых устройствах или версиях браузеров. Она доступна во всех браузерах с марта 2025 года.

Статический метод JSON.isRawJSON() проверяет, является ли значение объектом, возвращенным JSON.rawJSON().

Синтаксис

JSON.isRawJSON(value)

Параметры

value
Значение для проверки.

Возвращаемое значение

true, если value создан JSON.rawJSON(); в противном случае false.

Описание

Объекты "Raw JSON" при сериализации в JSON обрабатываются так, как если бы они уже были частью JSON. Кроме того, благодаря тому, как работает JSON.rawJSON(), гарантируется, что raw JSON является синтаксически корректным JSON. Дополнительную информацию о структуре и поведении объектов raw JSON см. в JSON.rawJSON(). Этот метод существует для того, чтобы другие библиотеки сериализации могли реализовать поведение, аналогичное JSON.stringify(), для объектов raw JSON.

Примеры

Использование JSON.isRawJSON()

Следующий пример демонстрирует, как использовать JSON.isRawJSON() для проверки, был ли объект возвращен JSON.rawJSON(). Он реализует пользовательский сериализатор, который сериализует данные в формат, похожий на YAML.

function mySerializer(value, indent = "") {
  if (typeof value !== "object" || value === null) {
    return JSON.stringify(value);
  }
  if (JSON.isRawJSON(value)) {
    return value.rawJSON;
  }
  const subIndent = `${indent}  `;
  if (Array.isArray(value)) {
    return `- ${value.map((v) => mySerializer(v, subIndent)).join(`\n${indent}- `)}`;
  }
  return Object.entries(value)
    .map(([key, value]) => {
      const subValue = mySerializer(value, subIndent);
      if (subValue.includes("\n")) {
        return `${key}:\n${subIndent}${subValue}`;
      }
      return `${key}: ${subValue}`;
    })
    .join(`\n${indent}`);
}

console.log(
  mySerializer({
    name: "Josh",
    userId: JSON.rawJSON("12345678901234567890"),
    friends: [
      { name: "Alice", userId: JSON.rawJSON("9876543210987654321") },
      { name: "Bob", userId: JSON.rawJSON("56789012345678901234") },
    ],
  }),
);

// name: "Josh"
// userId: 12345678901234567890
// friends:
//   - name: "Alice"
//     userId: 9876543210987654321
//   - name: "Bob"
//     userId: 56789012345678901234

Если в приведенном выше примере значения userId не были созданы JSON.rawJSON(), а переданы напрямую как числа, то мы получим потерю точности из-за ограничений точности чисел с плавающей запятой в JS.

console.log(
  mySerializer({
    name: "Josh",
    userId: 12345678901234567890,
    friends: [
      { name: "Alice", userId: 9876543210987654321 },
      { name: "Bob", userId: 56789012345678901234 },
    ],
  }),
);

// name: "Josh"
// userId: 12345678901234567000
// friends:
//   - name: "Alice"
//     userId: 9876543210987655000
//   - name: "Bob"
//     userId: 56789012345678900000

Спецификации

Спецификация
JSON.parse source text access
# sec-json.israwjson

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS Bun Deno Node.js
isRawJSON
114
114
135
100
18.4
114
135
76
18.4
23.0
114
18.4
1.1.43
1.33
21.0.0

См. также

  • Polyfill of JSON.isRawJSON in core-js
  • JSON
  • JSON.stringify()
  • JSON.rawJSON()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/isRawJSON

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API