Как передать данные 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] }
]} `
Я хочу передать эти данные в 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}
]
но если количество элементов в массиве изменяется, то это не сработает. Как решить эту проблему ? Демо-код мне поможет.
я судил следующие вопросы, но я не смог решить проблема.
2 ответов
вместо строительства 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]})
}
это построено series
array является частью объекта, который вы должны передать в качестве аргумента 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);
где #chart-это контейнер, в котором вы хотите отобразить диаграмму.
вы также можете обратитесь к скрипкам, которые доступны в их демо-страницы для каждого типа диаграммы, чтобы узнать больше о том, как отображать определенный тип диаграммы.
Я решил проблему
изменен массив 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] }
]
теперь передайте его непосредственно серии в highcharts.
series:sales
готово !!!!!