【问题标题】:Convert List of Objects to Json in ASP.NET MVC在 ASP.NET MVC 中将对象列表转换为 Json
【发布时间】:2012-11-08 11:31:46
【问题描述】:

我正在使用带有 ASP.NET MVC 4 的 JqPlot

这是来自 Jqplot 的 one of the examples 的样本数据

var line1 = [['2008-06-30 8:00AM', 4], ['2008-7-30 8:00AM', 6.5], ['2008-8-30 8:00AM', 5.7], ['2008-9-30 8:00AM', 9], ['2008-10-30 8:00AM', 8.2]];

对中的第一个值是 DateTime,另一个是值。

现在我试图从控制器中获取价值 like this,我正在使用 Web Api Controller

我的操作如下

public List<Stats> GetGraphData()
{
    var stats = new List<Stats>
                    {
                        new Stats {Date = DateTime.Now, Value = 4},
                        new Stats {Date = DateTime.Now.AddMonths(1), Value = 11},
                        new Stats {Date = DateTime.Now.AddMonths(2), Value = 5},
                        new Stats {Date = DateTime.Now.AddMonths(3), Value = 7},
                    };
    return stats;
}

但是返回的值是

[对象{日期=“2012-11-08T16:52:04.5047592+05:30”,值=4},[对象{日期=“2012-11-08T16:52:04.5047592+05:30”,值=4},...

所以我决定尝试 JSON.stringify() 给出以下结果...

[{"日期":"2012-11-08T16:52:04.5047592+05:30","值":4},{"日期":"2012-12-08T16:52:04.5047592+05: 30","值":11},{"日期":"2013-01-08T16:52:04.5047592+05:30","值":5},{"日期":"2013-02-08T16: 52:04.5047592+05:30","值":7}]

如何获得如下所示的格式? [['2008-06-30 8:00AM', 4], ['2008-7-30 8:00AM', 6.5], ['2008-8-30 8:00AM', 5.7], ['2008-9-30 8:00AM', 9], ['2008-10-30 8:00AM', 8.2]];

请帮帮我。

注意:请随时编辑我的问题的标题,我想不出其他任何内容:P

【问题讨论】:

    标签: jquery asp.net-mvc json asp.net-mvc-4


    【解决方案1】:

    这是因为你使用的是对象而不是数组,你可以这样做:而不是这样:

    new Stats {Date = DateTime.Now, Value = 4},
    

    试试这个:

    new String[] { DateTime.Now.ToString(), "4" },
    

    当然要把List&lt;Stats&gt;改成List&lt;String[]&gt;

    另一种选择是在获得对象后将对象扁平化为 Javascript 中的数组。假设您将来自服务器的数据放入名为serverArray 的变量中,这看起来像一个对象数组:

    var serverArray = [{Date: "2012-11-08T16:52:04.5047592+05:30", Value: 4}, { .... }, etc. etc. ];
    

    然后你可以使用.map()把这个数组映射到另一个数组中:

    results = serverArray.map(function (obj) { return [obj.Date, obj.Value]; });
    

    结果将如下所示(注意方括号表示数组和对象键、日期和值的缺失):

    [["2012-11-08T16:52:04.5047592+05:30", 4], [......], etc. etc. ];
    

    然后您可以在绘图中使用与示例数据相同的格式的“结果”。

    【讨论】:

    • List&lt;String[]&gt; 完成了这项工作。答案已接受:) 你能告诉我更多关于serverArray.map 方法的信息吗? ..
    • 使用 serverArray 我打算为来自服务器的数据随机命名。我更新了答案以使事情更清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多