将JSON解析为highcharts - 使用AJAX收集的数据

时间:2013-01-25 16:18:02

标签: ajax json parsing dynamic highcharts

我的JSON看起来像

[{"target": "sumSeries(integral(org.example.fib.hi.value),integral(org.example.fib.hi1.value))", 
"datapoints": 
    [
        [2, 1359214560], 
        [3, 1359215040], 
        [4, 1359215050], 
        [null, 1359215060], 
        [null, 1359215070], 
        [5, 1359215080], 
        [7, 1359215090], 
        [9, 1359215100], 
        [10, 1359215110], 
        [null, 1359215120], 
        [10, 1359215130], 
        [14, 1359215140], 
        [null, 1359215150]
    ]}
]

我正在尝试从我的localhost获取此数据,并让highcharts呈现折线图。 我有类似的东西:

$(function() {

$.getJSON('http://localhost/render?target=sumSeries(integral(org.example.fib.*.value))&from=-10minutes&format=json', function(data) {
    // Create the chart
    window.chart = new Highcharts.StockChart({
        chart : {
            renderTo : 'container'
        },

        rangeSelector : {
            selected : 1
        },

        plotOptions: {
            series: {
                stacking: 'normal'
            }
        },

        series : [{
            name : 'AAPL',
            data : data,
            tooltip: {
                yDecimals: 2
            }
        }]
    });
});

});

我如何解析这些数据?

1 个答案:

答案 0 :(得分:0)

我假设您使用时间戳(作为JSON中的第二个参数),因此应该解析数据以显示为datetime。如果是,则应以JSON格式还原数据参数,并将时间戳乘以1000(javascript时间戳格式)。解析示例:

var tmpdata = [],
        i = 0,
        len = data[0].datapoints.length;

    for(i=0;i<len;i++)
    {
        tmpdata[i] = [data[0].datapoints[i][1]*1000,data[0].datapoints[i][0]];
    }

然后是系列数据:

series : [{
        name : 'AAPL',
        data : tmpdata,
        tooltip: {
            yDecimals: 2
        }
    }]