d3 js - 加载没有http的json

时间:2012-06-07 15:24:11

标签: javascript json d3.js bubble-chart

我正在学习d3。 d3 js中有certain ways of loading the data。但他们似乎都在制作HTTP GET。在我的场景中,我已经将json数据放在一个字符串中。如何使用此字符串而不是发出另一个http请求?我试图为此寻找文档,但没有找到。

这有效:

d3.json("/path/flare.json", function(json) {
    //rendering logic here
}

现在,如果我有:

//assume this json comes from a server (on SAME DOMAIN)
var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}'; 

如何在d3&中使用已计算的'myjson'?避免对服务器的异步调用?感谢。

3 个答案:

答案 0 :(得分:81)

只需用

替换d3.json来电
json = JSON.parse( myjson );

IE:

var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}';

// d3.json("/path/flare.json", function(json) { #delete this line

    json = JSON.parse( myjson ); //add this line

    //rendering logic here

//} #delete this line

更新09/2013

原始代码已更改。因此,varname json应为root

// d3.json("flare.json", function(error, root) { #delete this line

    root = JSON.parse( myjson ); //add this line

    //rendering logic here

//} #delete this line

答案 1 :(得分:2)

根据这个例子:

http://phrogz.net/JS/d3-playground/#StockPrice_HTML

这里他们将图形数据存储在变量$ data中,并通过.data($ data)函数进行设置。

我将此方法应用于您正在使用的任何图形。

答案 2 :(得分:2)

chumkiu的答案对我很有用,但需要进行一些调整 - 在d3气泡图的最新版本中,你需要定义root而不是json,如

 root = JSON.parse( myjson );

或者,您可以在其余代码中将“root”替换为“json”。 : - )

对于任何有关使用本地数据集的d3节点链接树的问题的人来说,这个答案对我来说非常有用 - 非常感谢本页面上的贡献者。