2011-08-03 30 views
6

的JSON需要在以下格式:如何在ASP.NET MVC C#返回一個多維數組的JSON jqPlot圖表

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(...),我會得到一個異常。

任何想法如何最好地做到這一點?

感謝

回答

4

我猜你得到的錯誤,當您嘗試使用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類型的周圍數引號引起問題。

+0

謝謝了。你對這個例外是正確的(謝謝包括這個)。添加「對象」是關鍵 – wgpubs

+1

另外值得注意他人從谷歌登陸這裏 - 一個2維數組中的C#一樣小數[5,10]不會讓你在一個JSON二維數組出來MVC的,它可以讓你一個50個項目的數組。您需要列出以使其在JSON中以二維數組出現。 –