2016-03-10 74 views
3

我想建一个网站项目中,我得到JSON格式的细节,例如:如何加载一个JSON对象,而不是JSON文件

{ 
    "file_id": 333, 
    "t": "2016-03-08 12:00:56" 
} 

我试图表现出D3 JS酒吧输出图表。我遇到的问题是我得到的代码是为JSON文件工作,但不是从JSON反序列化的对象。任何人都可以帮助我解决这个问题吗?

为JSON文件的工作脚本的一部分是这样的:

d3.json("FILENAME", function(error, data) { 
    data = JSON.parse(data); 
    x.domain(data.map(function(d) { return d.letter })); 
    y.domain([0, d3.max(data, function(d) { return d.frequency })]); 

如果我更改文件名的一个对象它不工作。

+0

呃......这是怎么的Java? – fge

+3

阅读这里的文档https://github.com/mbostock/d3/wiki/Requests 它明确指出你必须给一个文件的路径,该功能不会采取一个对象 –

+0

ys,但我怎么能继续如果我有一个JSON对象 – monic

回答

9

是一个JS库D3的工作原理与JS对象(与其它JS数据类型一起)只, d3.json只是一个从外部文件加载对象的方法。所以,如果你不需要从外部文件加载数据,那么不使用d3.json

//d3.json("FILENAME", function(error, data) { 
    //data = JSON.parse(data); 
    var data = { 
     "file_id": 333, 
     "t": "2016-03-08 12:00:56" 
    }; //your own object 
    x.domain(data.map(function(d) { return d.file_id})); 
    y.domain([0, d3.max(data, function(d) { return d.t})]); 

希望它有助于

0

如果我改变文件名为一个对象,它不工作。

那么你应该把它在功能和传递对象在PARAMS:

var obj = {}; // the object to be be passed for chart 

function updateGraph(o){ // get in the params here 
    var x = d3.scale.ordinal().rangeRoundBands([0, width]), 
     y = d3.scale.linear().range([height, 0]); 

    x.domain(o.letter); 
    y.domain([0, o.frequency]); 
} 

updateGraph(obj); // <----pass it here 
相关问题