合并json对象和javascript对象

时间:2015-06-22 11:35:05

标签: javascript json

你好,我有这种格式的MySql的json响应

{
    "allResult": [{
        "UkupanBroj": "1",
        "mesec": "Jul"
    }, {
        "UkupanBroj": "3",
        "mesec": "Jun"
    }, {
        "UkupanBroj": "1",
        "mesec": "May"
    }],
    "resultByKurs": null
}

我正在尝试从此响应对象创建以传递到图表插件

var flotDashSales2Data = [{
    data: [
        ["Jan", 240],
        ["Feb", 240],
        ["Mar", 290],
        ["Apr", 540],
        ["May", 480],
        ["Jun", 220],
        ["Jul", 170],
        ["Aug", 190]
    ],
    color: "#850d0d"
}];

是否可以从我的回复中创建新对象???通过这种方式,如果我在某个月的回复中没有在我的数据中设置表单示例[“Jan”,0],那么我会传递给插件吗?

2 个答案:

答案 0 :(得分:5)

您可以通过以下方式获取实际数据:

data_result = JSON.parse(result);

它的格式不同,但您可以将其转换为您需要的格式。

汇总您可以按以下方式执行操作的数据:

var aggregate = {
    "Jan": 0,
    "Feb": 0,
    "Mar": 0,
    "Apr": 0,
    "May": 0,
    "Jun": 0,
    "Jul": 0,
    "Aug": 0 // fill in all 12 months
};

for (i = 0; i < data_result.allResult.length; i++)
{
    item = data_result.allResult[i];
    aggregate[item.mesec] += parseInt(item.UkupanBroj, 10);
}

然后,使用aggregate数据填充数组:

lotDashSales2Data = [{
    data: [
        ["Jan", aggregate.Jan],
        ["Feb", aggregate.Feb],
        ["Mar", aggregate.Mar],
        ["Apr", aggregate.Apr],
        // ... all 12 months
    ],
    color: "#850d0d"
}];

编辑:因为你有12个月的不变量(它们永远不会改变)你可以通过简单地逐个列出它们来避免复杂的代码,如我的代码所示。如果您更喜欢更复杂的代码,那么可以通过其他方式解决问题。这更多的是选择和权衡(灵活性与可读性)。其他因素如表现应该是无关紧要的。

答案 1 :(得分:0)

var flotDashSales2Data = JSON.parse(response);

使用JSON.parse