【发布时间】:2019-12-18 19:59:50
【问题描述】:
我正在 dotnet core 3.0 中编写一个 api 调用并尝试返回几个对象。只要其中的信息简单,我就可以返回所有对象。但是,当我有一个对象数组(也包含数组)时,该对象的结果为空。
例如,在下面的代码中,前三项(一个c#对象、一个字符串列表和一个字符串)都返回值,但调用结果中chartdatasets列表为空。当我单步执行服务器端的代码时会填充它。
我必须做一些特别的事情来返回一个复杂对象的数组吗?
[HttpGet]
public ActionResult<List<Chart>> GetCharts()
{
List<string> axisLabels = new List<string>() {"CLI","MC","MCAL","PAT","PTP","TP"};
string chartTitle = "Outstanding AR by Fin Group";
ReturnKey retKey = new ReturnKey() {AuthKey = "asdasdas", Message = "OK"};
List<ChartDataSet> dataSetList = new List<ChartDataSet>();
List<double> cData = new List<double>();
cData.Add(37795.59);
cData.Add(16839.71);
cData.Add(144.89);
cData.Add(90);
cData.Add(216829.68);
cData.Add(1764.52);
List<string> cBg = new List<string>();
dataSetList.Add(new ChartDataSet("Outstanding AR", cBg, cData));
return Ok(new {retKey, axisLabels, chartTitle, dataSetList});
}
postman 中的结果如下所示。
{
"retKey": {
"authKey": "asdasdas",
"message": "OK"
},
"axisLabels": [
"CLI",
"MC",
"MCAL",
"PAT",
"PTP",
"TP"
],
"chartTitle": "Outstanding AR by Fin Group",
"dataSetList": [
{}
]
}
【问题讨论】:
-
欢迎来到 StackOverflow!乍一看,你的回报看起来很奇怪。方法签名表示您正在返回图表列表,但在 Ok() 中您创建了匿名对象。也许如果你返回 Ok(new Chart(...)) 会有所帮助?
-
感谢您的回复。我确实尝试了几种变体。原来它是 ChartDataSet 类的定义。我在下面发布了一个示例。但是,我同意你的返回值。我会考虑将其更改为更灵活,使其更有意义。
标签: c# .net-core .net-core-3.0 actionresult