d3 js - 在没有 http get 的情况下加载 json
Posted
技术标签:
【中文标题】d3 js - 在没有 http get 的情况下加载 json【英文标题】:d3 js - loading json without a http get 【发布时间】:2012-06-11 16:29:18 【问题描述】:我正在学习 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”并避免对服务器的异步调用?谢谢。
【问题讨论】:
你想用这个对象做什么?另外,为什么要将其硬编码为字符串而不是纯 javascript 对象? @Pointy 服务器在响应中将其作为模型属性返回。所以我有字符串。例如,我拥有的 json 对应于 mbostock.github.com/d3/ex/bubble.html 中的代码,这就是其中的逻辑 另见***.com/questions/20940854/… 【参考方案1】:只需将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
【讨论】:
得到了那部分。你能告诉我如何使用这个解析的 'json' 对象来呈现图形(不发出 GET 请求)在这里找到 mbostock.github.com/d3/ex/bubble.html 该示例使用 d3.json("../data/flare.json" , function(json) 进行 http 调用。任何指向文档/示例的指针也会有所帮助。谢谢。 @Ravi 将14
行替换为json = JSON.parse( myjson );
并删除33
行。试试看
试过了。工作完美!现在我知道发生了什么...谢谢!
谢谢,我也遇到过类似情况。当然现在它可以工作了,但你的指导很有帮助,因为我仍然对 d3 有所了解。
等等,变量 json
究竟是如何传递给 d3 库的?你能解释一下这里发生了什么吗?【参考方案2】:
chumkiu 的回答对我来说非常有用,但需要进行一些调整 - 在最新版本的 d3 气泡图中,您需要定义 root 而不是 json,如
root = JSON.parse( myjson );
当然,您也可以在其余代码中将“root”替换为“json”。 :-)
对于任何回答有关使用本地数据集的 d3 节点链接树的问题的人,这个答案对我来说非常有用 - 非常感谢此页面上的贡献者。
【讨论】:
【参考方案3】:根据这个例子:
http://phrogz.net/JS/d3-playground/#StockPrice_HTML
这里他们将图形数据存储在变量 $data 中,并通过 .data($data) 函数进行设置。
我会将此方法应用于您正在使用的任何图表。
【讨论】:
这可能有效;他们在这里有一个类似的例子:github.com/mbostock/d3/wiki/Selections#wiki-data以上是关于d3 js - 在没有 http get 的情况下加载 json的主要内容,如果未能解决你的问题,请参考以下文章