我有一个很大的对象想要转换成JSON并发送。但它具有圆形结构。我想抛开任何存在的循环引用,发送任何可以被强化的东西。我该怎么做?
多谢了。
var obj = {
a: "foo",
b: obj
}
我想把obj缩写成:
{"a":"foo"}
在node.js中,可以使用util.inspect(对象)。它自动将循环链接替换为“[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))
还要注意,您可以传递options对象以进行检查(请参阅上面的链接)
inspect(myObject[, options: {showHidden, depth, colors, showProxy, ...moreOptions}])
请阅读并给下面的留言者点赞...
将json.stringify
与自定义替换器一起使用。例如:
// Demo: Circular reference
var circ = {};
circ.circ = circ;
// Note: cache should not be re-used by repeated calls to JSON.stringify.
var cache = [];
JSON.stringify(circ, (key, value) => {
if (typeof value === 'object' && value !== null) {
// Duplicate reference found, discard key
if (cache.includes(value)) return;
// Store value in our collection
cache.push(value);
}
return value;
});
cache = null; // Enable garbage collection
本例中的替换器不是100%正确的(取决于您对“重复”的定义)。在以下情况下,将丢弃值:
var a = {b:1}
var o = {};
o.one = a;
o.two = a;
// one and two point to the same object, but two is discarded:
JSON.stringify(o, ...);
但这个概念仍然存在:使用自定义替换器,并跟踪解析的对象值。
作为ES6中编写的实用函数:
// safely handles circular references
JSON.safeStringify = (obj, indent = 2) => {
let cache = [];
const retVal = JSON.stringify(
obj,
(key, value) =>
typeof value === "object" && value !== null
? cache.includes(value)
? undefined // Duplicate reference found, discard key
: cache.push(value) && value // Store value in our collection
: value,
indent
);
cache = null;
return retVal;
};
// Example:
console.log('options', JSON.safeStringify(options))
问题内容: 我有一个大对象,想要转换为JSON并发送。但是它具有圆形结构。我想扔掉任何存在的循环引用并发送任何可以字符串化的东西。我怎么做? 谢谢。 我想将obj字符串化为: 问题答案: 与自定义替换器一起使用。例如: 在此示例中,替换器不是100%正确的(取决于您对“重复”的定义)。在以下情况下,将丢弃一个值: 但是概念仍然存在:使用自定义替换器,并跟踪已解析的对象值。
我只想用下面的公式从任何给定的数字创建一个因子列表。我不允许使用列表,因此,我模仿使用字符串如下: 例如,假设我们选择num=12:
这是这个问题的后续问题。我需要prettyprint一个python dict(这样我可以直观地检查/修改它),并且我需要有json格式的输出(带双引号)。 模块pretty打印dict但使用单引号(而不是JSON!)。这是链接的其他问题/答案的主题。
如何在有向加权图中找到负循环。我知道Bellman-Ford算法是如何工作的,它告诉我是否存在可达到的负循环。但它没有明确地命名它。 如何获得循环的实际路径v1,v2,…vk,v1? 在应用标准算法后,我们已经进行了n−1次迭代,不可能有进一步的改进。如果我们仍然可以降低到节点的距离,则存在负循环。 假设edge(v, u)是bellman ford算法在第n次迭代中失败的边缘-d(u)
我正在从这个网站上阅读JSON格式的数据https://data.melbourne.vic.gov.au/api/views/ntht-5rk7/rows.json?accessType=DOWNLOAD 我开发了一个Python程序,将数据假脱机到CSV文件中。我花了一段时间才理解了这个系统的结构。 Python中有没有一种方法可以扫描文件,然后打印出文件字典结构和数据列表结构?这将有助于我在
问题内容: 我试图从我的postgres数据库中检索一些数据,并将它们打印为json。我成功地在没有json的情况下打印了它们,但我在json中需要它们。 main.go: 这是我访问localhost:1337 / db时得到的 这是终端上的输出: 有人知道是什么问题吗? 问题答案: 该包使用反射(结构的包),以存取字段。您需要导出结构的字段以使其起作用(以大写字母开头): 扫描时: 引用自: