我有一个大对象要转换为 JSON 并发送。但是它具有圆形结构。我想扔掉任何存在的循环引用并发送任何可以字符串化的东西。我怎么做?
谢谢。
var obj = {
a: "foo",
b: obj
}
我想将 obj 字符串化为:
{"a":"foo"}
原文由 Harry 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有一个大对象要转换为 JSON 并发送。但是它具有圆形结构。我想扔掉任何存在的循环引用并发送任何可以字符串化的东西。我怎么做?
谢谢。
var obj = {
a: "foo",
b: obj
}
我想将 obj 字符串化为:
{"a":"foo"}
原文由 Harry 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Node.js 中,您可以使用 util.inspect(object) 。它会自动用“[Circular]”替换循环链接。
尽管是内置的 (无需安装) ,但您必须导入它
import * as util from 'util' // has no default export
import { inspect } from 'util' // or directly
// or
var util = require('util')
console.log(util.inspect(myObject))
另请注意,您可以传递选项对象进行检查 (请参阅上面的链接)
inspect(myObject[, options: {showHidden, depth, colors, showProxy, ...moreOptions}])
请阅读下面的评论并给予荣誉……
原文由 Erel Segal-Halevi 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
将
JSON.stringify
与自定义替换器一起使用。例如:此示例中的替换器并非 100% 正确(取决于您对“重复”的定义)。在以下情况下,将丢弃一个值:
但概念是:使用自定义替换器,并跟踪解析的对象值。
作为用 es6 编写的实用函数: