如何在ASP.NET MVC C#中为jqPlot图表返回多维数组作为JSON

wgp*_*ubs 6 c# asp.net-mvc json jqplot

json需要采用以下格式:

var data = [
            ['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14], 
            ['Out of home', 16],['Commuting', 7], ['Orientation', 9]
          ];
Run Code Online (Sandbox Code Playgroud)

但在我的动作方法中,我无法弄清楚如何构造以该格式呈现的json.这是我有的:

var json = new[] {
                new[] {"Pending", summaryData.Sum(a => (int)a.Pending).ToString() },
                new[] {"Completed", summaryData.Sum(a => (int)a.Completed).ToString()}
            };

        return Json(json, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)

返回以下JSON:

[["Pending","146"],["Completed","914"]]
Run Code Online (Sandbox Code Playgroud)

这很接近,除了它们是数字值周围的引号,jqPlot似乎不喜欢它.不幸的是,如果我尝试在其上执行Int32.Parse(...),我会得到一个异常.

任何想法如何最好地做到这一点?

谢谢

And*_*ker 4

我猜当您尝试使用时遇到的错误Int32.parse类似于“找不到隐式类型数组的最佳类型”。当使用隐式类型数组并且该数组中的值具有不同类型时,编译器不知道要为该数组推断什么类型。

您可以通过告诉编译器数组的类型来解决该错误:

var json = new[] {
                new object[] {"Pending", summaryData.Sum(a => (int)a.Pending) },
                new object[] {"Completed", summaryData.Sum(a => (int)a.Completed) }
            };
Run Code Online (Sandbox Code Playgroud)

应该按照您想要的方式序列化数组。

对于 jqPlot,数字周围的引号会导致问题,因为插件很可能要求数组中的第二项为 Number 类型。