2015-02-05 88 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