如何在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#中返回结构复杂的字符串数组的主要内容,如果未能解决你的问题,请参考以下文章