使用jQuery's从数组的数组解析JSON

Parsing JSON using jQuery's each from array of arrays

本文关键字:数组 JSON jQuery 使用      更新时间:2023-09-26

注:大量更新。慢慢地但肯定地(大部分是慢慢地)到达那里

我有一个数组JSON,我需要从远程机器解析,但我把一个结构的例子在我的javascript。

这是一个数组的数组,我需要从称为"epochtime"(x轴)和"errors"(y轴)中提取epoch值。"节点"可以忽略。我的代码如下…小提琴在这里: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"answers"errors"值。如有任何建议,我将不胜感激。

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

  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/