2009-10-15 35 views
4

我有一個IEnumerable列表的日期/值對,我將作爲Json列表返回。然而,當我打電話JsonResult(),結果是這樣的:我該如何讓JsonResult返回一個數組(不帶字段名稱)而不是對象數組的數組?

[{"Date":date1, "Value":value1}, {"Date":date2, "Value":value2}...] 

海軍報期待

[[date1, value1], [date2, value2]...] 

有沒有什麼簡單的方法來獲得MVC架構的輸出對象這樣還是我需要編寫我自己的Seralizer/StringBuffer代碼?對於這個問題,我甚至不需要輸出字段名稱,只是數據本身。

回答

1

這聽起來像你只需要返回一個像這樣的字符串:

var builder = new StringBuilder(); 
builder.Append("["); 
foreach (var item in listOfDateTimes) 
    builder.AppendFormat("[{0}, {1}], ", item.Key, item.Value); 
var result = builder.ToString().TrimEnd(new char[]{',',' '}) + "]"; 
return result; 
+0

builder.AppendFormat萬一有人試圖複製/粘貼此代碼:) – Jedidja 2009-10-15 17:02:00

+0

@jedidja感謝您的趕上,我的空氣代碼是永遠不會完美的= P – Joseph 2009-10-15 17:02:58

+1

同樣爲了將來的參考,我最終從方法中返回了ContentResult。試圖返回一個字符串的Json()將其留在引號中,而flot正在尋找一個數組。 return內容(result,「json」) – Jedidja 2009-10-15 17:51:34

1

最好的辦法是自己寫,但這是一個很簡單的練習。

在我看來,值得花時間尋找一種方法來做到這一點,當你花10分鐘時間,並且自己做序列化。

+0

我覺得有了這麼多的MVC幫手可能會有一個選項來調整某處:) – Jedidja 2009-10-15 16:57:13

5

難道這些日期/值對類型的System.Web.UI.Pair?如果是這樣,你可以這樣做;

return Json(yourIEnumerable.Select(x => new[] { x.First, x.Second }).ToArray()); 

它返回你希望它是的方式;

[["\/Date(1255686550232)\/","foo"],["\/Date(1255686550232)\/","bar"]] 

即使他們不是System.Web.UI.Pair類型,我相信你會明白。

相關問題