2016-03-10 102 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 
相關問題