D3 JS - 在没有 HTTP Get 的情况下加载 JSON

d3 js - loading json without a http get

本文关键字:Get 情况下 加载 JSON HTTP JS D3      更新时间:2023-09-26

我正在学习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"并避免对服务器的异步调用?谢谢。

只需将d3.json呼叫替换为

json = JSON.parse( myjson );

即:

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

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

 root = JSON.parse( myjson );

或者,您可以在代码的其余部分将"root"替换为"json"。

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

根据这个例子:

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

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

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