将 JSON 数据解析为 chart.js 的特定格式

Parsing JSON data into specific format for chart.js

我正在尝试使用 Chart.js 使用动态生成的数据生成饼图。我在获取正确格式的数据时遇到问题,我想我已经接近了,但我已经被困了一段时间。

我正在使用 ajax 获取 JSON 数据,如下所示:

$.ajax({
    url: '../helpdesk/getTicketsPerSubcat/' + startDate + '/' + endDate + '/' + activeLabel,
    dataType: 'JSON',
    success: function(result){
        var pieData = new Array();

        // populate array
        for (i in result) {
            var foo = {value: result[i].total, label: result[i].subcategory}
            var jsonString = JSON.stringify(foo);
            pieData.push(jsonString);
        }
        console.log(pieData);
    }
});

哪个returns:

["{"value":"2","label":"Disk Space"}", "{"value":"1","label":"Performance Issue"}"]

这是文档中所说的数据需要的样子:

var data = [
    {
        value: 300,
        label: "Red"
    },
    {
        value: 50,
        label: "Green"
    },
    {
        value: 100,
        label: "Yellow"
    }
]

我似乎在方括号内有那些额外的引号,这一定是导致错误的原因 (Uncaught TypeError: Cannot read property 'length' of undefined)。 JSON.stringify() 是不是使用了错误的函数?非常感谢任何帮助!

JSON.stringify() 是否使用了错误的函数?

是的,因为有效的 JSON 被转换为 JSON 字符串。

相反,只需将您想要的对象放入数组中即可:

for (i in result) {
    var foo = {value: result[i].total, label: result[i].subcategory}
    pieData.push(foo);
}