1

我的 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)] });

我该怎么做?

4

1 回答 1

7

你可以这样做:

var data2 = {
    label: 'Order',
    dataBar: data.map(function(v){return [
         v.order.completed_at,
         parseFloat(v.order.total)
    ]})
};

演示(打开控制台查看data2)

但请注意,没有什么可以称为“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.)

于 2013-01-30T10:11:37.603 回答