如何返回一个多维数组JSON的jqPlot图表在ASP.Net MVC c#

本文关键字:jqPlot ASP MVC Net JSON 返回 何返回 一个 数组 | 更新日期: 2023-09-27 18:04:14

json需要是这样的格式:

var data = [
            ['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14], 
            ['Out of home', 16],['Commuting', 7], ['Orientation', 9]
          ];

但是在我的动作方法中,我不知道如何构建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);

返回以下JSON:

[["Pending","146"],["Completed","914"]]

这很接近,除了它们的数值周围是引号,jqPlot似乎不喜欢它。不幸的是,如果我试图做一个Int32.Parse(…)对它,我得到一个异常。

有什么好主意吗?

谢谢

如何返回一个多维数组JSON的jqPlot图表在ASP.Net MVC c#

我猜当你尝试使用Int32.parse时,你得到的错误是"没有为隐式类型数组找到最佳类型"。当使用隐式类型数组且该数组中的值类型不同时,编译器不知道该为该数组推断何种类型。

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

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

这个应该按照你想要的方式序列化数组。

对于jqPlot,数字周围的引号引起了一个问题,因为插件很可能要求数组中的第二项为number类型。