迴圈物件值
並非所有物件都可以轉換為 JSON 字串。當物件具有迴圈自引用時,轉換將失敗。
這通常是分層資料結構的情況,其中父級和子級都相互引用:
const world = {
name: 'World',
regions: []
};
world.regions.push({
name: 'North America',
parent: 'America'
});
console.log(JSON.stringify(world));
// {"name":"World","regions":[{"name":"North America","parent":"America"}]}
world.regions.push({
name: 'Asia',
parent: world
});
console.log(JSON.stringify(world));
// Uncaught TypeError: Converting circular structure to JSON
一旦程序檢測到一個迴圈,就會引發異常。如果沒有迴圈檢測,則字串將無限長。