d3 js - 加载没有http的json

Rav*_*avi 62 javascript json bubble-chart d3.js

我正在学习d3.有一些方法可以在d3 js 中加载数据.但他们似乎都在制作HTTP GET.在我的场景中,我已经将json数据放在一个字符串中.如何使用此字符串而不是发出另一个http请求?我试图为此寻找文档,但没有找到.

这有效:

d3.json("/path/flare.json", function(json) {
    //rendering logic here
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我有:

//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 }]}]}]}'; 
Run Code Online (Sandbox Code Playgroud)

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

Luc*_*one 81

只需将d3.json呼叫替换为

json = JSON.parse( myjson );
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

更新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
Run Code Online (Sandbox Code Playgroud)

  • @Ravi用`json = JSON.parse(myjson);`替换行`14`并删除行`33`.试试吧 (6认同)
  • 得到那部分。你能告诉我如何使用这个解析的 'json' 对象来呈现在 http://mbostock.github.com/d3/ex/bubble.html 中找到的图形(无需 GET 请求)该示例使用 *d3。 json("../data/flare.json", function(json)* 进行 http 调用。任何指向文档/示例的指针也会有所帮助。谢谢。 (2认同)