使用jQuery修改JSON对象

时间:2013-01-30 10:09:40

标签: jquery json parsing

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

我该怎么做?

1 个答案:

答案 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。)