我遇到了从加载外部JSON文件到使用本地json字符串的问题。起初,似乎d3.json()返回了我在$ .getJSON()中使用JSON.parse()获得的相同JSON数组,尽管虽然它们看起来很相似,但看起来d3.json添加了“ ID“我的JSON数据变量。在构建Sankey Graph in D3时,这似乎非常重要。此外,使用完全相同的数据,使用$ .getJSON()和JSON.parse(),此ID元素不会出现在完全相同的输出调用中。 D3是否故意在其数据中添加“ID”元素?如何使用JSON.parse()获得相同的结果?
在视觉上,console.log(mygraph)调用的输出显示为:
Object {source: Object, target: Object, value: "0", path: "path#0", dy: 0}
dy:0
id:0
path:"path#3"
source:Object
sy:0
target:Object
ty:0
value:"0"
__proto__:Object
但是,使用console.log(mygraph)调用的后一种方法看起来像:
Object {source: Object, target: Object, value: "0", path: "path#0", dy: 0}
dy:0
path:"path#3"
source:Object
sy:0
target:Object
ty:0
value:"0"
__proto__:Object
这个“ID”到底是什么?如何使用后一种方法获得它?实际上,如何将本地JSON变量加载到D3?
答案 0 :(得分:1)
d3.json()
与$.getJSON()
类似,因为它将url字符串作为第一个参数,以及将数据作为第二个参数加载时调用的函数。
JSON.parse()
做了其他事情。它需要一个看起来像JSON的字符串,并将其解析为json等javascript对象。
任何人都不会在其生成的数据中添加任何内容,例如id
param。 <{1}}必须在您正在加载/解析的数据中。
生成id
可能发生的一件事是您成功加载/解析了数据,然后将其传递给添加了id
道具的另一个函数。在这种情况下,甚至可能有些混乱发生在Chrome的id
允许您展开您记录的任何对象的方式上。问题是,即使你console.log
'编辑了你的对象,在其他函数添加了console.log
道具之前,按照你点击展开它的时间,它已经存在并出现了。