当前位置:首页 > Web开发 > 正文

会输出结果如下: VM211:1 Uncaught TypeError: Converting circular st

2024-03-31 Web开发

JSON.stringify大家已经不陌生了,是一个将json东西转换为字符串的要领。但是如果你在浏览器控制台中输出 JSON.stringify(window). 如果期望输出一段文字, 可能会掉望了. 事实上, 会输出功效如下:

VM211:1 Uncaught TypeError: Converting circular structure to JSON at JSON.stringify (<anonymous>) at <anonymous>:1:6

上面的错误信息报告我们, 东西中存在循环引用. 解决思路就是通过自界说stringify要领,设置一个全局缓存变量,stringify的第二个参数如果是function时,,他会传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根东西的键是一个空字符串:""。所以,便有了如下解决方案:

var o = {}; o.o = o; // 声明cache变量,便于匹配是否有循环引用的情况 var cache = []; var str = JSON.stringify(o, function(key, value) { if (typeof value === 'object' && value !== null) { if (cache.indexOf(value) !== -1) { // 移除 return; } // 收集所有的值 cache.push(value); } return value; }); cache = null; // 清空变量,便于垃圾回收机制回收

如上即可解决json字符串化循环引用的问题。

站在巨人的肩膀上摘苹果:

https://www.oecom.cn/json-stringify-error/

https://stackoverflow.com/questions/11616630/how-can-i-print-a-circular-structure-in-a-json-like-format

JSON.stringify呈现 Converting circular structure to JSON

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30400.html