| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Errors/BigInt_not_serializable | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Die JavaScript-Ausnahme "BigInt-Wert kann nicht in JSON serialisiert werden" tritt auf, wenn ein BigInt in JSON.stringify ohne eine benutzerdefinierte Serialisierungsmethode auftritt.
TypeError: Do not know how to serialize a BigInt (V8-based) TypeError: BigInt value can't be serialized in JSON (Firefox) TypeError: JSON.stringify cannot serialize BigInt. (Safari)
TypeError
Sie versuchen, einen BigInt-Wert mit JSON.stringify zu serialisieren, was standardmig keine BigInt-Werte untersttzt. Manchmal erfolgt die JSON-Stringifizierung implizit in Bibliotheken als Teil der Datenserialisierung. Beispielsweise erfordert das Senden von Daten an den Server, das Speichern in externen Speichern oder das bertragen zwischen Threads eine Serialisierung, die oft mit JSON durchgefhrt wird.
Es gibt mehrere Mglichkeiten, damit umzugehen:
JSON.stringify, die BigInt-Werte in Zeichenfolgen oder Zahlen umwandelt.BigInt.prototype.toJSON-Methode bereitstellen, die aufgerufen wird, wann immer ein BigInt-Wert stringifiziert wird.Fr weitere Informationen zu verschiedenen Kompromissen siehe BigInt-Referenz.
Standardmig sind BigInt-Werte nicht in JSON serialisierbar:
const data = { a: 1n };
JSON.stringify(data);
// TypeError: BigInt value can't be serialized in JSON
Angenommen, Sie beabsichtigen, dass das JSON einen Zahlenwert enthlt, hier sind einige Anstze, die funktionieren:
Wandeln Sie den BigInt vor der Stringifizierung in eine Zahl um:
const data = { a: 1n };
JSON.stringify({ ...data, a: Number(data.a) });
// '{"a":1}'
Stellen Sie eine Ersetzungsfunktion bereit, die BigInt-Werte in Zahlen oder raw JSON objects umwandelt:
const data = { a: 1n };
JSON.stringify(data, (key, value) =>
typeof value === "bigint" ? Number(value) : value,
);
// '{"a":1}'
const data = { a: 1n };
JSON.stringify(data, (key, value) =>
typeof value === "bigint" ? JSON.rawJSON(value.toString()) : value,
);
// '{"a":1}'
Stellen Sie eine BigInt.prototype.toJSON-Methode bereit, die aufgerufen wird, wann immer ein BigInt-Wert stringifiziert wird:
BigInt.prototype.toJSON = function () {
return Number(this);
};
const data = { a: 1n };
JSON.stringify(data);
// '{"a":1}'
BigInt.prototype.toJSON = function () {
return JSON.rawJSON(this.toString());
};
const data = { a: 1n };
JSON.stringify(data);
// '{"a":1}'
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |