如何让JsonResult返回一个数组数组(没有字段名)而不是一个对象数组?

时间:2009-10-15 16:48:05

标签: asp.net-mvc json flot

我有一个IEnumerable日期/值对列表,我将作为Json列表返回到flot。但是,当我调用JsonResult()时,结果如下所示:

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

Flot期待

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

有没有简单的方法让MVC框架输出这样的对象,还是我需要编写自己的seralizer / StringBuffer代码?就此而言,我甚至不需要输出字段名称,只需输出值本身。

3 个答案:

答案 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;