我有一个IEnumerable日期/值对列表,我将作为Json列表返回到flot。但是,当我调用JsonResult()时,结果如下所示:
[{"Date":date1, "Value":value1}, {"Date":date2, "Value":value2}...]
Flot期待
[[date1, value1], [date2, value2]...]
有没有简单的方法让MVC框架输出这样的对象,还是我需要编写自己的seralizer / StringBuffer代码?就此而言,我甚至不需要输出字段名称,只需输出值本身。
答案 0 :(得分: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
的类型,我也相信你会明白这一点。
答案 1 :(得分:1)
你最好的选择是自己写,但这是一项微不足道的工作。
在我看来,当你花费10分钟并自己进行序列化时,是否值得花时间寻找一种方法。
答案 2 :(得分: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;