2014-01-06 44 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/