我的API使用以下JSON结构响应我的调用:
[
{
"order": {
"total": "240.0",
"completed_at": 1358432545000
}
},
{
"order": {
"total": "720.0",
"completed_at": 1359474090000
}
}
]
但是,我希望这个JSON的结构如下,以便在Flot Graphs中使用我的数据:
{
"label":"Order",
"dataBar":[
[
1358432545000,
240.0
],
[
1325635200000 ,
720.0
]
]
}
我尝试了以下代码,但它以逗号分隔返回所有数据,没有'['和']'
var flotData = $.map(API_Response, function(i){ return [i.order.completed_at, parseInt(i.order.total)] });
我该怎么做?
答案 0 :(得分:7)
你可以这样做:
var data2 = {
label: 'Order',
dataBar: data.map(function(v){return [
v.order.completed_at,
parseFloat(v.order.total)
]})
};
Demonstration(打开控制台查看数据2)
但请注意,没有什么可以称为“JSON结构”或“JSON对象”。
你拥有的是一个普通的JavaScript对象,即使它被发送到用JSON编码的浏览器。
现在假设您不知道对象的属性被称为order
,那么您可以使用
var label;
for (var k in data[0]) {
label = k[0].toUpperCase()+k.slice(1);
break;
}
var data2 = {
label: label,
dataBar: data.map(function(v){return [
v[k].completed_at,
parseFloat(v[k].total)
]})
};
(如果不支持IE 8,它会更干净,因为我可以使用Object.keys
。)