API から JSON として受け取ったオブジェクトをループ処理し、チャート ライブラリ用に別のオブジェクトを組み立てるには、助けが必要です。
オブジェクトのサンプルを次に示します。
var channel_data = [
{
"27th Oct 12": {
"xaxis": "27th Oct 12",
"channels": {
"Create and Craft": {
"views": 13064,
"bandwidth": 623136899214,
"name": "Create and Craft"
},
"5 USA": {
"views": 394,
"bandwidth": 17889861768,
"name": "5 USA"
}
},
"totalViews": 25470,
"totalBandwidth": 923866774348
},
"28th Oct 12": {
"xaxis": "28th Oct 12",
"channels": {
"Create and Craft": {
"views": 15298,
"bandwidth": 860108829822,
"name": "Create and Craft"
},
"5 USA": {
"views": 500,
"bandwidth": 28770314737,
"name": "5 USA"
}
},
"totalViews": 29377,
"totalBandwidth": 1248778079465
}
}
]
このデータをループして、Highcharts レンダリングで使用する次のオブジェクトの配列を作成する必要があります。カテゴリは日付になり、データは各チャネルの日付ごとのビューになります。
categories: ['27th Oct 12", "28th Oct 12"]
series: [{
name: 'Create and Craft',
data: [13064, 15298]
}, {
name: '5 USA',
data: [394, 500]
}, {
}]
次のことを試しましたが、間違った構造になってしまいました。
var dates = [], channels=[], views = [];
for (var gdata in channel_data) {
dates.push(channel_data[gdata].xaxis);
for (var channel in channel_data[gdata].channels){
channel_name = channel_data[gdata].channels[channel].name;
channel_views = channel_data[gdata].channels[channel].views;
channel_data = {"name" :channel_name,"views" : channel_views}
channels.push(channel_data);
}
views.push(model.attributes[gdata].channels.name.views);
}