【问题标题】:Return JSON using List<> Object Nested Element Formatting On Result使用 List<> 对象嵌套元素格式返回 JSON 结果
【发布时间】:2019-11-24 19:52:44
【问题描述】:

我的列表对象是我从 dbcontext 身份模型中提取的线性数据行。问题是 JSON 结构需要返回包含在嵌套参数中的值。见例子。我如何实现这一目标? child 中的数据不需要是单独的模型类定义,因为数据只需要在结果中以某种方式定义到接受的 javascript 客户端库。

以下代码从控制器的 JSON 结果返回。

using (var dc = new EntitiesDB.CalendarEntities())
{
  var evt1 = (from e in dc.CalendarEvents(startDate, endDate)
             select new
              {
                 e.EventID,
                 e.Subject,
                 e.startDateRecur,
                 e.startTimeRecur,
         e.Ruletype,
         e.RuleValue                           
}).ToList();

   return Json(evt1.Select(v => new
   {
      id = v.EventID,
      title = v.Subject,
      startRecur = v.startDateRecur,                    
      startTime = v.startTimeRecur,
      ruleType = v.RuleType,
      ruleValue = v.RuleValue
   }), JsonRequestBehavior.AllowGet);


[{
"id":222044,
"title":"Sample Day Recur Event 1",
"startRecur":"1/1/2019",                    
"startTime":"00:12:00",
"ruleType":"Weekly",
"ruleValue" = "True"
},
{
"id":222045,
"title":"Sample Day Recur Event 2",
"startRecur":"1/1/2019",                    
"startTime":"00:15:00",
"ruleType":"Weekly",
"ruleValue" = "True"
}]

如何让它返回结果,以便我可以将一些值放入嵌套元素“rrule”中的结果中?

[{
"id":222044,
"title":"Sample Day Recur Event 1",
"startRecur":"1/1/2019",                    
"startTime":"00:12:00",
rrule: { 
         "ruleType":"Weekly",
         "ruleValue" = "True"
       }
},
{
"id":222045,
"title":"Sample Day Recur Event 2",
"startRecur":"1/1/2019",                    
"startTime":"00:15:00",
rrule: { 
         "ruleType":"Weekly",
         "ruleValue" = "True"
       }
}]

【问题讨论】:

    标签: c# json model-view-controller c#-4.0


    【解决方案1】:

    您将使用如下的对象初始化器语法为 rrule 投射一个新类型:

    return Json(evt1.Select(v => new
       {
          id = v.EventID,
          title = v.Subject,
          startRecur = v.startDateRecur,                    
          startTime = v.startTimeRecur,
          rrule = new { 
              ruleType = v.RuleType,
              ruleValue = v.RuleValue
          }
       }
    

    【讨论】:

    • 谢谢,Stuart,这是一个过度思考的案例,并且是 mvc 中模型类的新手 :) 我感谢您的快速响应。
    猜你喜欢
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2022-01-20
    • 1970-01-01
    • 2020-03-30
    • 2014-05-15
    相关资源
    最近更新 更多