C#:返回Javascript对象集合与对象数组

时间:2017-06-08 16:16:38

标签: c# json asp.net-mvc

我正在使用第三方地图来获取内部网中的某些图表功能。要填充区域,我需要传递一个格式化的对象集合(javascript):

            simplemaps_usmap_mapdata.state_specific = {
            AZ: {
                name: "Arizona",
                description: "The best state in the whole got damn union",
                color: "#cecece",
                hover_color: "default",
                url: "",
              },
            NH: {
                name: "New Hampshire",
                description: "Small and insignificant",
                color: "#f68831",
                hover_color: "default",
                url: "",
              }
        }

显然,如果它是一个对象数组会好得多,那么通过我的C#控制器返回一个List很简单,但由于它是一个对象集合,返回JSON的最佳方法是什么通过我的C#控制器以这种方式格式化?

2 个答案:

答案 0 :(得分:2)

首先是一个班级:

class MyClass {
    public string name {get;set;}
    public string description {get;set;}
    public string color {get;set;}
    public string hover_color {get;set;}
    public string url {get;set;}
}

然后,一本字典:

var result = new Dictionary<string, MyClass>();

添加到词典:

result["AZ"] = new MyClass { name="xyz"... };

最后,通过JSON方法返回字典:

return JSON(result);

答案 1 :(得分:0)

我假设您已经将控制器配置为返回JSON,这意味着您的对象类型是唯一需要设置的对象。

您可能已经意识到,此格式的问题是您需要定义一个对象,该对象具有其根级别的所有状态。当你不需要返回每一个州时,这很乏味而且可能有些过分。

要解决此问题,请使用C#中的session.createQuery( "update APPOINTMENTS " + "set BEGIN_DATE = :newBeginDate " + "where " + "(BEGIN_DATE is null or BEGIN_DATE > :newBeginDate) " + "and ID = :id ") .setParameter("newBeginDate", newBeginDate) .setParameter("id", id) .executeUpdate(); session.createQuery( "update APPOINTMENTS " + "set END_DATE = :newEndDate " + "where " + "(END_DATE is null or END_DATE < :newEndDate) " + "and ID = :id ") .setParameter("newEndDate", newEndDate) .setParameter("id", id) .executeUpdate(); 类型或匿名对象。这将允许您定义当时所需的内容:

控制器方法的伪代码:

dynamic