64

我正在学习d3。在 d3 js 中有一些加载数据的方法。但他们似乎都做了一个 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”并避免对服务器的异步调用?谢谢。

4

3 回答 3

83

只需将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

原始代码已更改。所以 varnamejson应该是root

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

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

    //rendering logic here

//} #delete this line
于 2012-06-07T15:34:12.723 回答
3

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

 root = JSON.parse( myjson );

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

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

于 2013-07-09T15:57:12.050 回答
2

根据这个例子:

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

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

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

于 2012-06-07T15:49:49.047 回答