将JSON数据的格式更改为类似JS数组

时间:2014-01-06 20:55:03

标签: javascript jquery arrays json

我想从http://chartapi.finance.yahoo.com/instrument/1.1/goog/chartdata;type=close;range=1d/json/?callback=?

获取JSON数据的时间戳/关闭

看起来像http://www.highcharts.com/samples/data/jsonp.php?filename=goog-c.json&callback=?

中的JS数组

请参阅:http://jsfiddle.net/gMs6n/已更新: http://jsfiddle.net/gMs6n/2/)(查看控制台以查看数据日志) 使用Highcharts示例的工作版本:http://jsfiddle.net/gMs6n/1/

$(function () {

  // ajax in data 
  $.ajax({
    type: 'GET',
    dataType: 'jsonp',
    cache: true, jsonp: false, jsonpCallback: 'graph',
    url: 'http://chartapi.finance.yahoo.com/instrument/1.1/goog/chartdata;type=close;range=1d/json/?callback=graph', // http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=graph
    processData: false
  }).success(function(data) {

    // manipulate the data
    console.log(data);
    //JSON.parse(data);

    // create a new data object
    $.each(data.series, function (i, val) {
      for (var key in data.series[i]) {
        //console.log(key);
        console.log(data.series[i][key]); // how to pair up the timestamp/close in a new data object?
      }
    });

    // Create the chart
    /*
    $('#container').highcharts('StockChart', {
      series: [{
        data: data,
        tooltip: {
          valueDecimals: 2
        }
      }]
    });
    */


  });

});

我已尝试JSON.parse(data);$.parseJSON(data);,但我收到了错误消息。我一定是做错了。

如何在ajax之后操纵它,以便最终得到"数据" Highcharts可以使用?我正在使用$.each迭代数据以形成新的数据集。 如何在新数据对象中配对时间戳/关闭?

2 个答案:

答案 0 :(得分:0)

我希望这是你所寻找的,或者至少让你更接近目标:

  }).success(function(data) {
   var series = data.series.map(function(data){ return [data.Timestamp, data.close] ;   });
// manipulate the data
  console.log(series[0]);

这将产生一个具有以下格式的单个数组:

[1389018600, 1114.25] 

这是更新的小提琴:

http://jsfiddle.net/gMs6n/4/

答案 1 :(得分:0)

工作:http://jsfiddle.net/gMs6n/5/

$(function () {

  // ajax in data 
  $.ajax({
    type: 'GET',
    dataType: 'jsonp',
    cache: true, jsonp: false, jsonpCallback: 'graph',
    url: 'http://chartapi.finance.yahoo.com/instrument/1.1/goog/chartdata;type=close;range=1d/json/?callback=graph', // http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=graph
    processData: false
  }).success(function(data) {

    // manipulate the data
    //console.log(data);
    //JSON.parse(data);
    var chartData = [];

    $.each(data.series, function (i, val) {
      for (var key in data.series[i]) {
        //console.log(key);
        //console.log(data.series[i][key]); 
      }
      var chartTime = data.series[i].Timestamp;
      var chartClose = data.series[i].close;
      //console.log(data.series[i]);
      //console.log(chartTime);
      chartData.push([chartTime, chartClose]);
    });

    console.log(chartData);


    // Create the chart
    $('#container').highcharts('StockChart', {
      series: [{
        data: chartData,
        tooltip: {
          valueDecimals: 2
        }
      }]
    });

  });

});