javascript エラー「Uncaught TypeError: Do not know how to serialize a BigInt」の解決方法
- 作成日 2022.12.07
- 更新日 2022.12.22
- javascript
- javascript
javascriptで、エラー「Uncaught TypeError: Do not know how to serialize a BigInt」が発生した場合の原因と解決方法を記述してます。「JSON.stringify」に「bigint」を使用した場合に発生します。「chrome」や「firefox」や「safari」の各ブラウザのエラーメッセージの画像もキャプチャしてます。
環境
- OS windows11 pro 64bit
- ブラウザ chrome 108.0.5359.125
エラー内容
以下の、「JSON.stringify」に「bigint」型を使用した際に発生。
JSON.stringify({a: 1n});
エラーメッセージ
Uncaught TypeError: Do not know how to serialize a BigInt
at JSON.stringify (<anonymous>)
画像
firefox107の場合では、以下のエラーが発生します。
Uncaught TypeError: BigInt value can't be serialized in JSON
画像
safari15.5では、以下のエラーとなります。
TypeError: JSON.stringify cannot serialize BigInt.
画像
原因
「JSON.stringify」は「bigint」を使用できないため
解決方法
「Number」に変換して使用する。
const result = JSON.stringify({ a: 1n, b: 10, c: 100n },(k,v) =>
{ return typeof v === 'bigint' ? Number(v) : v }
);
console.log( result );
// {"a":1,"b":10,"c":100}
除去して使用するのもありかと思います。
const obj = { a: 1n, b: 10, c: 100n };
Object.keys(obj).forEach(v => {
if (typeof obj[v] === 'bigint') {
delete obj[v];
}
});
const result = JSON.stringify(obj);
console.log( result );
// {"b":10}
または、「bigint」が含まているか判定してから使用する方法もあります。
const obj = { a: 1n, b: 10, c: 100n };
let flg = true;
Object.keys(obj).forEach(v => {
if (typeof obj[v] === 'bigint') {
flg = false;
}
});
let result = (flg) ? JSON.stringify(obj) : '無効な値が含まれています';
console.log( result );
// 無効な値が含まれています
-
前の記事
Oracle Database ファンクションを再コンパイルする 2022.12.06
-
次の記事
mac 1つ後ろの文字を削除するショートカットキー 2022.12.07
コメントを書く