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 |
См. также
© 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