【问题标题】:How can I make JsonResult return an array of arrays (without field names) rather than an array of objects?如何让 JsonResult 返回一个数组数组(没有字段名)而不是一个对象数组?
【发布时间】:2009-10-15 16:48:04
【问题描述】:

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

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

弗洛特期待

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

是否有任何简单的方法可以让 MVC 框架输出这样的对象,或者我是否需要编写自己的序列化程序/StringBuffer 代码?就此而言,我什至不需要输出字段名称,只需输出值本身。

【问题讨论】:

    标签: asp.net-mvc json flot


    【解决方案1】:

    这些日期/值对类型是否为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 的类型,我相信你也明白了。

    【讨论】:

      【解决方案2】:

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

      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;
      

      【讨论】:

      • builder.AppendFormat 以防以后有人试图复制/粘贴此代码 :)
      • @jedidja 谢谢你的收获,我的航空代码从来都不是完美的=P
      • 为了将来参考,我最终从该方法返回了 ContentResult。尝试返回字符串的 Json() 将其留在引号中,并且 flot 正在寻找一个数组。返回内容(结果,“json”)
      【解决方案3】:

      最好的办法是自己写,但这是一个微不足道的练习。

      在我看来,当您可以花 10 分钟自己进行序列化时,是否值得花上几个小时寻找一种方法。

      【讨论】:

      • 我认为在 MVC 中有这么多 Helpers 可能有一个选项可以在某处进行调整:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 2014-08-20
      • 2016-06-27
      • 2015-09-05
      • 2017-05-29
      • 2016-03-06
      • 1970-01-01
      相关资源
      最近更新 更多