json - ASP.Net MVC - Google Charts 的 Json 数据

标签 json asp.net-mvc google-visualization

Google Charts 新手,我正在尝试创建 Google Chart, Controller 返回 JSON 数据,例如

{"data":[["In Progress","10"],["Completed","20"],["Deleted","5"],["Overdue","8"]]}

但是Google图表所需的数据应该是这样的

[["In Progress",10],["Completed",20],["Deleted","5"],["Overdue",8]]

我有以下 JS 函数:

$(document).ready(function () {
        $.ajax({
            url: '@Url.Action("TaskStatus", "Graph")',
            data: "",
            dataType: "json",
            type: "POST",
            contentType: "application/json; chartset=utf-8",
            success: function (data) {                   
                var jsonData = JSON.stringify(data);

                var dt = new google.visualization.DataTable();
                dt.addColumn('string', 'Tasks');
                dt.addColumn('number', 'Count');

                $.each(arrJson, function (i, obj) {
                    $.each(obj, function (i, o) {
                        console.log(o[1]);                            
                        dt.addRow(o[0],parseInt(o[1])); // here I get error of datatype for "Count" column
                    })                                              
                })
                chartData = dt;
            },
            error: function (err) {
                alert(err);
                console.log(err);
            }
        }).done(function () {
            drawChart();
        })
    })

function drawChart()
{           
var options = {
                width: '500px',
                title: "Task Status",
                pointSize: 20,
                chartArea:{width:"100%",height:"100px"}
            };
        var pieChart = new google.visualization.PieChart(document.getElementById('chart_div'));
        pieChart.draw(chartData, options);
}

Controller 返回

List<object> temp = new List<object>();
            temp.Add(new[] { "In Progress", "10" });
            temp.Add(new[] { "Completed", "20" });
            temp.Add(new[] { "Deleted", "5" });
            temp.Add(new[] { "Overdue", "8" });

            return Json(new { data = temp });

请问如何解决这个问题?预先非常感谢!

最佳答案

您不应在 AJAX 成功回调中使用 JSON.stringify 函数,因为这会将您从服务器获取的对象转换为字符串。你可以试试这个:

success: function (result) {
    var dt = new google.visualization.DataTable();
    dt.addColumn('string', 'Tasks');
    dt.addColumn('number', 'Count');

    // Taking the "data" property as your controller returns it that way
    var data = result.data;

    $.each(data, function (i, obj) {
        var label = obj[0];
        var value = parseInt(obj[1]);
        dt.addRow([label, value]);
    });

    chartData = dt;
},

关于json - ASP.Net MVC - Google Charts 的 Json 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39631406/

相关文章:

javascript - jquery 显示 [object object] 而不是数组

ios - 使用 iOS 5 创建 JSON - 问题

javascript - 将日期字符串格式化为适合 Google 日历作为参数

javascript - 当我在饼图中选择一个切片时,我想显示切片选择的某种视觉表示

javascript - 即使使用 Google Charts Tools 饼图,值 = 0,也会在图例中显示项目

python - 将 JSON 加载到 multiprocessing.managers.DictProxy 对象中

javascript - 如何在 MongoDB 的多个嵌套数组中插入和查找对象?

c# - DateTime 的 Razor DisplayFor = 输入字符串的格式不正确

javascript - 是否有可能在客户端有一个进度条链接到 saveAs() 的进度?

c# - 谁能一眼就告诉我为什么这个 Action 这么慢?