如何在JSON.parse语句中正确访问数据?

时间:2015-07-25 15:56:26

标签: javascript jquery json jqplot

我尝试使用通过AJAX调用返回的JSON数组。我想把这些数据放在JQPlot中来绘制它。当我使用硬编码的虚拟数据时,我的图表绘制得很好。虚拟数据如下所示:

    var s1 = [200, 600, 700, 1000];
    var s2 = [460, -210, 690, 820];
    var s3 = [-260, -440, 320, 200];
    var ticks = ['May', 'June', 'July', 'August'];

我尝试使用自己的数据来自ajax调用' garray'看起来像这样:

    var obj = JSON.stringify(garray);
    alert(obj);
    /*this displays the following:
    {"date":[["2015-05-29","2015-05-12","2015-04-30","2015-03-30","2015-02-27","2015-02-26"]],"close":[[0,3,1,1,0,0]],"high":[[1,3,2,1,0,1]],"low":[[0,-1,0,-1,-1,-1]]} */

obj = JSON.parse(obj);
s1 = obj["date"];
alert(s1);
//the alert above displays: 2015-05-29,2015-05-12,2015-04-30,2015-03-30,2015-02-27,2015-02-26

问题是这个分离被解释为JQPlot中的一个变量,而不是单独的日期。与其他字符串完全相同,所以我怀疑我没有正确处理它们?我需要使用不同的方法吗?

2 个答案:

答案 0 :(得分:1)

您拥有的每个字段(dateclose等)实际上是一个数组数组(注意开头的双[[]]结束 - 一个数组只需要其中一个)。我的猜测是,您使用的API可以返回多组数据,而您只需要一个。

所以,你应该使用obj["date"][0](和其他人一样)

答案 1 :(得分:0)

s1 = obj["date"]; // is an array of dates
for( var i = 0; i < s1.length; i++ ){
  console.log(s1[i]) // logs each date in the array
}