如何将json数据传递给highcharts系列?

Pra*_*kar 7 javascript jquery json highcharts

我有跟随在运行时生成的json数组.因此,名称/数据对的数量不同.

`var sales = { "SalesData" : [ 
{ "name"  : "AllProducts|Canada", "data" :[44936.0,50752.0] },
{ "name"  : "AllProducts|Mexico", "data" : [200679.0,226838.0] },
{ "name"  : "AllProducts|USA",    "data" : [288993.0,289126.0] }
                    ]}    `
Run Code Online (Sandbox Code Playgroud)

我想将这些数据传递给highcharts中的系列.

这就是我目前的做法.

series: [     
        {name:sales.SalesData[0].name,data:sales.SalesData[0].data},
        {name:sales.SalesData[1].name,data:sales.SalesData[1].data},
        {name:sales.SalesData[2].name,data:sales.SalesData[2].data}

            ]
Run Code Online (Sandbox Code Playgroud)

但是如果数组中的元素数量发生了变化,那么这将不起作用. 我该如何解决这个问题?演示代码将帮助我.

我已经审问了以下问题,但我无法解决问题.

动态添加到Highcharts

Highcharts系列数据阵列

Anb*_*san 5

series您可以循环遍历变量数据并构造数组,而不是手动sales构造数组。因此,无论数组中的元素数量有多少sales.SalesData,所有项目都将存在于series数组中

var series = [],
    salesData= sales.SalesData;

for (var i=0 i< salesData.length; i++) {
    series.push({"name" : key, "data" : sales[key]})
}
Run Code Online (Sandbox Code Playgroud)

这个构造的series数组是对象的一部分,您必须将其作为参数传递给highcharts方法。

var chartdata = {
    chart: {type: 'column'},
    title: {text: 'Sales Data'},
    xAxis: {
        categories: ['Category 1','Category 2']
    },
    yAxis: {
        min: 0,
        title: {text: 'Sales'}
    },
    series : []
}

chartdata.series = series;

$('#chart').highcharts(chartdata);
Run Code Online (Sandbox Code Playgroud)

其中#chart 是要在其中显示图表的容器。

您还可以参考每种图表类型的演示页面中提供的小提琴,以了解有关如何显示特定类型图表的更多信息。


Pra*_*kar 5

我解决了这个问题

更改 json 数组如下:

var sales = [ 
              { "name"  : "AllProducts123|Canada", "data" :[44936.0,50752.0] },
              { "name"  : "AllProducts|Mexico", "data" : [200679.0,226838.0] },
              { "name"  : "AllProducts|USA",    "data" : [288993.0,289126.0] }
            ]
Run Code Online (Sandbox Code Playgroud)

现在将它直接传递给 highcharts 中的系列。

 series:sales
Run Code Online (Sandbox Code Playgroud)

完毕 !!!!!