将Yahoo或Google Finance API数据读入javascript对象,以便在Google可视化图表中使用

将Yahoo或Google Finance API数据读入javascript对象,以便在Google可视化图表中使用,javascript,jquery,google-visualization,Javascript,Jquery,Google Visualization,一般来说,我对javascript和web编程非常熟悉。 我正在尝试使用谷歌可视化图表API制作一个基本的股价图表。 我的数据是雅虎金融或谷歌金融的历史市场数据 如何将这些财务数据读入javascript对象 例如,使用python,我可以在从python对象生成图表之前,将这些数据读入字典或DataFrame对象以存储它们。我想用JS/Jquery/etc实现这一点 下面是我试图使用的代码的一个基本示例,在此示例中,我从Google Finance读取JSON响应,获取1天的股价信息: fun

一般来说,我对javascript和web编程非常熟悉。 我正在尝试使用谷歌可视化图表API制作一个基本的股价图表。 我的数据是雅虎金融或谷歌金融的历史市场数据

如何将这些财务数据读入javascript对象

例如,使用python,我可以在从python对象生成图表之前,将这些数据读入字典或DataFrame对象以存储它们。我想用JS/Jquery/etc实现这一点

下面是我试图使用的代码的一个基本示例,在此示例中,我从Google Finance读取JSON响应,获取1天的股价信息:

function drawVisualization() {
   // How to get the stock data into my DataTable.?
    var dataTable = google.visualization.arrayToDataTable([
       // [ { "id": "694653" ,"t" : "GOOG" ,"e" : "NASDAQ" ,"l" : "1,133.16" ,"l_fix" : "1133.16" ,"l_cur" : "1,133.16" ,"s": "0" ,"ltt":"1:11PM EST" ,"lt" : "Jan 7, 1:11PM EST" ,"c" : "+15.84" ,"c_fix" : "15.84" ,"cp" : "1.42" ,"cp_fix" : "1.42" ,"ccol" : "chg" } ]

    ], true);

    // Draw the chart.
    var chart = new google.visualization.CandlestickChart(document.getElementById('visualization'));
    chart.draw(dataTable, {legend:'none', width:600, height:400});
}
​ 所以我的问题是如何在JavaScript中存储股票数据,然后如何将这些数据传递到google.visualization.arrayToDataTable()


我是否直接传递URL?或者将URL返回的JSON对象存储在一个变量中,然后将其传递到google.visualization.arrayToDataTable()?

假设您已经将数据输入到javascript中,则需要将其解析为visualization API DataTable的适当格式(因为代码所暗示的格式不兼容)。您可以这样解析它:

var financeData = /* finance data, assumed in this code to be an array of objects */;
var parsedData = [];

// create row of column headers
parsedData.push(['ID', 'ticker', 'exchange' /* ... filling out all columns you want to use */]);
// parse financeData
for (var i = 0; i < financeData.length; i++) {
    parsedData.push([financeData[i].id, financeData[i].t, financeData[i].e /* ... filling out all columns you want to use */]);
}
var dataTable = google.visualization.arrayToDataTable(parsedData);
var financeData=/*财务数据,在此代码中假设为对象数组*/;
var parsedData=[];
//创建列标题的行
push(['ID','ticker','exchange'/*…填写所有要使用的列*/]);
//解析财务数据
对于(var i=0;i
[编辑-使用jQuery AJAX从Yahoo Finance数据源构建数据表的示例代码]

function drawTable () {
    // use jQuery to make an AJAX request for data
    $.ajax({
        url: 'http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json',
        dataType: 'jsonp',
        success: function (json) {
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Name');
            data.addColumn('string', 'Symbol');
            data.addColumn('number', 'Price');
            data.addColumn('date', 'UTC Time');

            // parse the JSON into the DataTable
            for (var i = 0; i < json.list.resources.length; i++) {
                var name = json.list.resources[i].resource.fields.name;
                var symbol = json.list.resources[i].resource.fields.symbol;
                var price = parseFloat(json.list.resources[i].resource.fields.price);
                var dateTimeArr = json.list.resources[i].resource.fields.utctime.split('T');
                var dateArr = dateTimeArr[0].split('-');
                var year = dateArr[0];
                var month = dateArr[1] - 1; // subtract 1 to make compatible with javascript dates
                var day = dateArr[2];
                var timeArr = dateTimeArr[1].split(/[:\+]/);
                var hour = timeArr[0];
                var minute = timeArr[1];
                var second = timeArr[2];

                data.addRow([name, symbol, price, new Date(year, month, day, hour, minute, second)]);
            }

            var table = new google.visualization.Table(document.querySelector('#table_div'));
            table.draw(data);
        }
    });
}
google.load('visualization', '1', {packages:['table'], callback: drawTable});
函数绘图表(){
//使用jQuery对数据发出AJAX请求
$.ajax({
网址:'http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json',
数据类型:“jsonp”,
成功:函数(json){
var data=new google.visualization.DataTable();
data.addColumn('string','Name');
data.addColumn('string','Symbol');
data.addColumn(“数字”、“价格”);
data.addColumn(“日期”、“UTC时间”);
//将JSON解析到数据表中
for(var i=0;i

看到它在这里工作了吗:

谢谢。这很有帮助,但我还没有做到。我仍在尝试将数据转换成javascript。我该怎么做呢?这取决于你的数据来源。比如说,从雅虎财经获取货币价格数据。如何将这些数据转换成JavaScript?它返回JSON格式,并返回多个符号。当我看到JSON时,我会想到Python字典或DataFrame,但不确定JS。谢谢您需要使用AJAX从Yahoo中提取数据。有几个javascript库提供了AJAX函数来为您处理困难的部分;jQuery可能是最常用的一种。我将用一个使用jQuery的示例更新我的答案。如何在单击按钮时调用drawTable函数?我有一个文本输入。我使用var symbol=$(“#按钮”).val()存储符号,然后将其放入URL:string中。如何在单击按钮时调用ajax?