JSON.rawJSON / isRawJSON în JavaScript

JSON Nou (Node.js 21+, Chrome 114+, Firefox 135+)

Pune în JSON un text exact cum este, de exemplu numere mari care altfel și-ar pierde precizia.

Sintaxă
JSON.rawJSON(textJson)
JSON.isRawJSON(valoare)

Ce face JSON.rawJSON / isRawJSON

JSON.stringify scrie numerele JavaScript, care sunt exacte doar până la 253 − 1. Un id de 64 de biți păstrat ca BigInt nu poate fi scris direct. JSON.rawJSON(text) creează o valoare specială pe care JSON.stringify o scrie exact ca textul dat.

Textul trebuie să fie o valoare JSON simplă validă (număr, text între ghilimele, true, false, null), nu un obiect sau un tablou. JSON.isRawJSON verifică dacă o valoare a fost creată cu rawJSON.

Parametri

Parametru Descriere
textJson Textul JSON al unei valori simple.

Ce returnează

rawJSON: un obiect special, înghețat. isRawJSON: true sau false.

Exemple

Exemplul 1: Un id BigInt scris exact

const id = 12345678901234567890n;

console.log(JSON.stringify({ id: Number(id) }));
console.log(JSON.stringify({ id: JSON.rawJSON(id.toString()) }));
console.log(JSON.stringify({ id }, (k, v) => (typeof v === "bigint" ? JSON.rawJSON(v.toString()) : v)));
console.log(JSON.isRawJSON(JSON.rawJSON("1")), JSON.isRawJSON(1));

Rezultat

{"id":12345678901234567000}
{"id":12345678901234567890}
{"id":12345678901234567890}
true false

Greșeli frecvente

  • Dai un obiect sau un tablou: JSON.rawJSON('{"a":1}') aruncă SyntaxError. Merge doar pentru valori simple.

Comenzi înrudite

  • JSON.stringify: Transformă un obiect sau tablou JavaScript în text JSON.
  • BigInt: Numere întregi de orice mărime, fără pierdere de precizie; se scriu cu n la final.
  • JSON.parse: Transformă un text JSON într-un obiect sau tablou JavaScript.