[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/JSON/isRawJSON [Back]  [Original]

JSON : mthode statique isRawJSON() - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

JSON : mthode statique isRawJSON()

Baseline 2025
Nouvellement disponible

Depuis mars 2025, cette fonctionnalit fonctionne sur les appareils et les versions de navigateur les plus rcents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.

La mthode statique JSON.isRawJSON() vrifie si une valeur est un objet retourn par JSON.rawJSON().

Dans cet article

Syntaxe

js
JSON.isRawJSON(value)

Paramtres

value

La valeur tester.

Valeur de retour

true si value a t cr par la mthode JSON.rawJSON() ; sinon false.

Description

Les objets  raw JSON , lorsqu'ils sont srialiss en JSON, sont traits comme s'ils taient dj une portion de JSON. De plus, du fait du fonctionnement de JSON.rawJSON(), le JSON brut est garanti tre un JSON syntaxiquement valide. Pour plus d'informations sur la forme et le comportement des objets JSON brut, voir JSON.rawJSON(). Cette mthode existe pour permettre d'autres bibliothques de srialisation d'implmenter un comportement similaire JSON.stringify() pour les objets JSON brut.

Exemples

Utiliser la mthode isRawJSON()

L'exemple suivant montre comment utiliser JSON.isRawJSON() pour tester si un objet a t retourn par JSON.rawJSON(). Il implmente un srialiseur personnalis qui produit un format semblable YAML.

js
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

Si, dans l'exemple cidessus, les valeurs userId n'avaient pas t cres par JSON.rawJSON() mais passes directement comme nombres, alors nous subirions une perte de prcision en raison des limites de prcision des nombres virgule flottante en JS.

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

Spcifications

Spcification
JSON.parse source text access
# sec-json.israwjson

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page