2014-01-06 18 views
0

我想利用时间戳从http://chartapi.finance.yahoo.com/instrument/1.1/goog/chartdata;type=close;range=1d/json/?callback=?改变格式成类似于JS阵列[解决]

JSON数据的/关闭到看起来像一个JS阵列中http://www.highcharts.com/samples/data/jsonp.php?filename=goog-c.json&callback=?

参见: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);但我得到一个错误。我一定做错了什么。

怎样操纵它后阿贾克斯所以用“数据”是Highcharts可以使用结束了?我正在使用$.each来迭代数据以形成新的数据集。 如何配对新数据对象中的时间戳/关闭?

+0

对数据进行迭代,从旧数据中创建与所需输出相匹配的新数据。 'JSON.parse'和'$ .parseJSON'比最初的JSON字符串转换成JavaScript数组/对象,jQuery是已经为你做无用的这个任务,其他。 –

+0

数据*已经是* JavaScript对象(不是JSON,JSON是* text *)。如果dataType是“json”或“jsonp”,jQuery将透明地处理转换。在成功回调中使用调试器并检查'data'并查看它包含的结构 - 并适当地使用它。 – user2864740

+1

听起来像是[.MAP](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) – tenub

回答

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/