我该如何让JsonResult返回一个数组(不带字段名称)而不是对象数组的数组?

我该如何让JsonResult返回一个数组(不带字段名称)而不是对象数组的数组?

问题描述:

我有一个IEnumerable列表的日期/值对,我将作为Json列表返回。然而,当我打电话JsonResult(),结果是这样的:我该如何让JsonResult返回一个数组(不带字段名称)而不是对象数组的数组?

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

海军报期待

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

有没有什么简单的方法来获得MVC架构的输出对象这样还是我需要编写我自己的Seralizer/StringBuffer代码?对于这个问题,我甚至不需要输出字段名称,只是数据本身。

这听起来像你只需要返回一个像这样的字符串:

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

最好的办法是自己写,但这是一个很简单的练习。

在我看来,值得花时间寻找一种方法来做到这一点,当你花10分钟时间,并且自己做序列化。

+0

我觉得有了这么多的MVC帮手可能会有一个选项来调整某处:) – Jedidja 2009-10-15 16:57:13

难道这些日期/值对类型的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类型,我相信你会明白。