使用jQuery来解析JSON,每个数组来自数组

时间:2016-09-08 18:36:03

标签: javascript jquery json parsing highcharts

注意:重大更新。缓慢但肯定地(大多是缓慢地)到达那里

我有一个数组JSON数组,我需要从远程机器解析,但我在我的javascript中添加了一个结构示例。

它是一个数组数组,我需要从被调用的" epochtime"中提取一个纪元值。 (x轴)和"错误" (y轴)。 "节"可以忽略。我的代码在下面...小提琴在这里:https://jsfiddle.net/wilkiejane/uLuwazu3/4/

  var data = [
    [{
      "epochtime": 1470456000000,
      "errors": 2,
      "nodes": 5
    }],
    [{
      "epochtime": 1470484800000,
      "errors": 7,
      "nodes": 8
    }],
    [{
      "epochtime": 1470715200000,
      "errors": 10,
      "nodes": 11
    }],
    [{
      "epochtime": 1470855600000,
      "errors": 15,
      "nodes": 4
    }],
    [{
      "epochtime": 1470866400000,
      "errors": 10,
      "nodes": 6
    }],
    [{
      "epochtime": 1471024800000,
      "errors": 12,
      "nodes": 14
    }]
  ]

  var options = {
    chart: {
      renderTo: 'container',
      type: 'spline'
    },
    xAxis: {
      categories: []
    },
    series: [{
            name: 'Errors',
          data: []
    }]
  }

   Highcharts.each(data, function(i,ecs) {
       options.xAxis.categories.push(ecs.epochtime);
       options.series.data.push(parseFloat(ecs.errors));
  });

  $('#container').highcharts(options);

我知道由于我解析了JSON,图形不是绘图。当我评论出Highcharts.each ...

  Highcharts.each(data, function(i,ecs) {
       options.xAxis.categories.push(ecs.epochtime);
       options.series.data.push(parseFloat(ecs.errors));
  });

并详细说明这样的类别和数据选项......

  var options = {
    chart: {
      renderTo: 'container',
      type: 'spline'
    },
    xAxis: {
      categories: [1470456000000,1470484800000,1470715200000,1470855600000,1470866400000,1471024800000]
    },
    series: [{
            name: 'Errors',
          data: [2,7,10,15,10,12]
    }]
  }

它看起来很棒,很明显我的问题是试图拉动" epochtime"和"错误"价值观。任何建议都会非常感激。

1 个答案:

答案 0 :(得分:1)

这完全取决于您希望如何在图表中显示数据。如果要在其上显示日期(而不是类别轴),则应该具有日期时间轴。如果你想从你提供的数据中得到一个包含点数的系列,你可以在这里找到如何将这些数据添加到你的图表的代码:

  var options = {
    xAxis: {
      type: 'datetime'
    },
    series: [{
      data: []
    }]
  }
  Highcharts.each(data, function(p, i) {
    for (var i = 0; i < p.length; i++) {
      options.series[0].data.push(
        [p[i].timeBucket, parseFloat(p[i].errors)]
      );
    }
  });

在这里,您可以找到图表可以如何工作的实时示例:https://jsfiddle.net/uLuwazu3/17/