如何在c#中返回结构复杂的字符串数组

Posted

技术标签:

【中文标题】如何在c#中返回结构复杂的字符串数组【英文标题】:How to return a string array with complex structure in c# 【发布时间】:2021-06-21 05:41:27 【问题描述】:

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

我需要返回这个数组


"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,
        )));
         
    

【问题讨论】:

也许你可以考虑使用Dictionary来数据。 请修正第二个代码 sn-p 中的缩进。不可读。 当属性名称为 int 或 datetime 等值时。它暗示它是一本字典。但为什么一切都是匿名类型? json 的 DTO 是这样的负担吗?您可以通过简单的复制过去来创建它们。 这能回答你的问题吗? How to auto-generate a C# class file from a JSON string。将预期结果粘贴到工具app.quicktype.io 将生成类。并且需要.ToString("yyyy-MM-dd") 将日期时间转换为这种格式。 Em...不,格式字符串不是问题...日期以正确格式出现在字符串中,问题是如何显示该值并从该值创建一个正文使用普通的 json 【参考方案1】:

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

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 将引发异常。

【讨论】:

以上是关于如何在c#中返回结构复杂的字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

解析从 c# 返回的 json 字符串数组

C#如何将OBJECT转换成数组

oracle函数返回varchars数组,在c#中

C# 结构到字节数组封送产生 19 个元素而不是 20 个

数据结构与算法(C#)入门 --- 串和数组

c#中的字符串拆分返回一个空数组