2015-02-05 86 views
0

我是D3js的新手,並且在使用json文件時遇到了一致性問題。這個問題讓我非常困惑。我張貼的例子:json數據不呈現

http://jsfiddle.net/tommy6s/m5dfmf5r/

我在控制檯中工作,並曾嘗試以下,以及我能想到的所有其他組合:

console.log(data) //returns data 
console.log(data.value); //returns undefined 
console.log(d.value); //returns d is not defined 
console.log(data[0].value); //returns 67.53 first single value 

我也得到一個控制檯錯誤:TypeError: string.slice is not a function var n = d3_time_numberRe.exec(string.slice(i, i + 4));

回答

0

它看起來像你正在返回的日期幾乎全爲空。

不要在你的例子以下作爲這個測試:

data.forEach(function(d) { 
    console.log(d); 
    d.date = parseDate(d.date); 
    d.value = +d.value; 
}); 

你會發現一個嘗試後失敗。 d.date中的每個日期都爲null。導致parseDate函數失敗。

在您的類型函數中,我將其更改爲使用javascript new Date來轉換它,並在forEach循環中移除了第二次調用parseDate以解決該問題。

function type(d) { 
     var obj = {}; 
     console.log(d); 
     obj.date = new Date(d[0]); //Use the javascript date object is perhaps better? 
     obj.value = d[1]; 

     return obj; 
} 

http://jsfiddle.net/m5dfmf5r/5/

+0

非常感謝你Rezant!我不確定我會想出這一個。 – t6s 2015-02-06 02:45:18

+0

不是問題,我絕對認爲Max會更好地回答你的實際問題。 – Nate 2015-02-06 15:06:04

2

d.data陣列中的元件具有以下結構:

["2015-02-28", 67.53, 68.67, 67.05, 67.68, 0.0, 67.68 ]

enter image description here

我不知道爲什麼這不是一個JSON對象(字段值對),但是爲了訪問它,你需要做如下事情:

function(error, d) { 
    var data = d.data; 
    data.forEach(function(d) { 
    var date = parseDate(d[0]); 
    var open = d[1]; 
    var high = d[2]; 
    .. 
    var close= d[6]; 
    }); 
} 
+0

謝謝你的幫助最大!我同意你關於JSON。我認爲這是讓我感到困惑的一部分。 – t6s 2015-02-06 02:52:28

+0

屏幕取自JsonViewer免費程序http://jsonviewer.software.informer.com/1.2/ – MaxZoom 2015-02-06 15:46:53