【问题标题】:Using JsonResult with jQuery将 JsonResult 与 jQuery 一起使用
【发布时间】:2014-04-23 02:04:50
【问题描述】:

我需要为 jQuery 插件返回一个 Json。

必须是这样的:[{ "name": "Testing", "desc": "OB-2014-0202", "values": [{ "Status": 2, "from": "\/Date(1391295600000)\/", "to": "\/Date(1392505200000)\/", "customClass": null, "label": "DO NOT DELETE" }] }],

但是JsonResult返回

[{ "name": "DO NOT DELETE", "desc": "OB-2014-0202", "values": { "Status": 2, "from": "\/Date(1391295600000)\/", "to": "\/Date(1392505200000)\/", "customClass": null, "label": "DO NOT DELETE" } }],

注意“值”节点缺少的 []。

Json 的生成方式如下:

public class JsonOrdersGantt
{
    #region Constructors

    public JsonOrdersGantt(IEnumerable<Order> listOrders)
    {
        Orders = new List<JsonOrderGantt>();

        foreach (var order in listOrders)
        {
            Orders.Add(new JsonOrderGantt(order));
        }
    }

    #endregion

    #region Properties

    public List<JsonOrderGantt> Orders { get; set; }

    #endregion
}

public class JsonOrderGantt
{
    #region Constructors

    public JsonOrderGantt(Order order)
    {
        name = order.ordBrand;
        desc = order.ordPO;
        values = new JsonOrderGanttValues(order);            
    }

    #endregion

    #region Properties
    public string name { get; set; }
    public string desc { get; set; }
    public JsonOrderGanttValues values { get; set; }

    #endregion
}

public class JsonOrderGanttValues
{
    #region Constructors

    public JsonOrderGanttValues(Order order)
    {
        from = order.ordStartDate;
        to = order.ordEndDate;
        customClass = order.ordStatus.ToString();
        label = order.ordBrand;
    }

    #endregion

    #region Properties

    public DateTime? from { get; set; }
    public DateTime? to { get; set; }
    public string customClass  { get; set; } //: "ganttRed"
    public string label  { get; set; }
    #endregion
}

以及函数的调用:

public JsonResult GetGanttOrders()
{            
    var repository = new OrderRepository();
    var models = repository.GetGanttOrdersList();

    return Json(new JsonOrdersGantt(models), JsonRequestBehavior.AllowGet);
}

知道如何获取带有 [] 的 Json 作为值吗? (或者使用 jQuery 让它在没有 [] 的情况下工作)

非常感谢

【问题讨论】:

  • 你现在拥有它的方式,值是一个对象。为了有 [] 你需要值是一个数组

标签: jquery asp.net-mvc json model-view-controller


【解决方案1】:

试试

values = new List<JsonOrderGanttValues> { new JsonOrderGanttValues(order) };

【讨论】:

    【解决方案2】:

    使用 jquery 遍历树如下

    var obj = [{ "name": "DO NOT DELETE", "desc": "OB-2014-0202", "values": { "Status": 2, "from": "\/Date(1391295600000)\/", "to": "\/Date(1392505200000)\/", "customClass": null, "label": "DO NOT DELETE" } }];
    console.log(obj[0].name);
    console.log(obj[0].desc);
    console.log(obj[0].values);
    console.log(obj[0].values.Status);
    console.log(obj[0].values.from);
    console.log(obj[0].values.customClass);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-24
      • 2016-04-18
      • 2015-06-16
      • 2017-04-29
      • 2010-11-28
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多