结合json对象和javascript对象

Combine json object and javascript object

本文关键字:对象 javascript 结合 json      更新时间:2023-09-26

你好,我有来自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],那会很酷吗?

您可以使用获取实际数据

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"
}];

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

var flotDashSales2Data = JSON.parse(response);

使用JSON.parse