且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

d3 js - 加载json没有http get

更新时间:2023-12-05 16:14:40

只需用

  d3.json  c> 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); //添加此行

//渲染逻辑

//}#删除此行

UPDATE 09/2013



原始程式码已变更。因此varname json 应为 root

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

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

//渲染逻辑

//}#删除此行


I am learning d3. There are certain ways of loading the data in d3 js. But all of them seem to make a HTTP GET. In my scenario, I already have the json data in a string. How can I use this string instead of making another http request? I tried to look for documentation for this but found none.

This works:

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

Now, if I have:

//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 }]}]}]}'; 

How do I use already computed 'myjson' in d3 & avoid a async call to server? Thanks.

Simply replace d3.json call with

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

UPDATE 09/2013

Original code has changed. So varname json should be root:

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

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

    //rendering logic here

//} #delete this line