[JavaScript] TypeError: Converting circular structure to JSON 対策に fast-safe-stringify が便利

JSON.stringify で TypeError: Converting circular structure to JSON を出さないために fast-safe-stringify を使うと良いという話をご紹介します。

JavaScript

JSON.stringify でエラー

JSON.stringify を下記のような場合に使うと TypeError: Converting circular structure to JSON が発生します。

const o = { a: 1 }
o.o = o

console.log(JSON.stringify(o))

// TypeError: Converting circular structure to JSON

fast-safe-stringify で文字列 [Circular] へ変換

JSON.stringify の代わりに fast-safe-stringify を利用すると TypeError: Converting circular structure to JSON は発生せず、[Circular] という文字列に変換してくれます。

const safeStringify = require('fast-safe-stringify')
const o = { a: 1 }
o.o = o
 
console.log(safeStringify(o))

// '{"a":1,"o":"[Circular]"}'

json-stringify-safe より高速な fast-safe-stringify

同じ用途で json-stringify-safe がありますが、fast-safe-stringify の方が高速というベンチマークが GitHub 上に掲載されています。

以上、TypeError: Converting circular structure to JSON に遭遇しないように fast-safe-stringify を利用している、現場からお送りしました。