首页 > 解决方案 > 如何在c#中返回具有复杂结构的字符串数组

问题描述

对于遗留系统,我需要返回一个对象,而不是在其中包含一个键值而不是日期,并且内部有一个主体,知道如何完成工作吗?

我需要返回这个数组

{
"sellerId":"157747190185796800",
 "data":
 { 
  "2020-08-25":{ "sales":195000,"comission":25350},
  "2020-08-26":{"sales":70500,"comission":9165},
  "2020-08-27":{ "sales":51000,"comission":6630}
 } 
}
   

我正在尝试使用 json 结果并且它可以工作,但是键值日期存在问题

编辑:我正在尝试提出字典的建议,但是,我不知道在这种情况下我做错了什么。我也尝试作为一个对象,但不起作用。

    var lst = new List<Dictionary<string, JsonResult>>();

    foreach (var item in listToReturn)
    { 

        lst.Add(new Dictionary(item.DateFromStr, new JsonResult (new
        {
            sales = item.sales,
            comission = item.Comission,
        })));
         
    }

标签: c#arraysjson

解决方案


我将使用匿名对象创建 JSON,使用 Dictionary 来存储销售数据,如下所示:

var resultToReturn = new 
{
    sellerId,
    data = listToReturn.ToDictionary (
        item => item.DateFromStr,
        item => new 
        { 
            sales = item.Sales, 
            commission = item.Commission 
        }
    )
};

然后您可以resultToReturn使用您最喜欢的序列化程序进行序列化,或者如果您使用的是 MVC,请将其返回为JsonResult.

演示小提琴:https ://dotnetfiddle.net/jZvoNo

注意:此解决方案假定所有日期值在列表中都是唯一的,否则ToDictionary将引发异常。


推荐阅读