Return restful api 中的嵌套数组与 dotnet 核心 3.0
Return nested arrays in restful api with dotnet core 3.0
我正在 dotnet core 3.0 中编写 api 调用并尝试 return 多个对象。我可以 return 所有对象,只要它们中的信息很简单。但是,当我有一个对象数组(也包含数组)时,该对象的结果为空。
例如,在下面的代码中,前三项(一个c#对象、一个字符串列表和一个字符串)都是return值,但是chartdatasets列表在结果中是空的称呼。当我单步执行服务器端的代码时,它会被填充。
我是否必须对 return 复杂对象数组做一些特殊的事情?
[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": [
{}
]
}
我没有post ChartDataSet 的定义,但事实证明这就是问题所在。从与同事的讨论中,我们发现 ChartDataSet 属性没有被封装。将 {get;set} 添加到每个我想在 API 中 return 的属性后,它似乎工作正常。
[Serializable]
public class ChartDataSet {
public string label {get;set;}
public string backgroundColor {get;set;}
public List<double> data {get;set;}
public ChartDataSet(string lbl, string bgcolor, List<double> datavalue)
{
label = lbl;
backgroundColor = bgcolor;
data = datavalue;
}
}
我正在 dotnet core 3.0 中编写 api 调用并尝试 return 多个对象。我可以 return 所有对象,只要它们中的信息很简单。但是,当我有一个对象数组(也包含数组)时,该对象的结果为空。
例如,在下面的代码中,前三项(一个c#对象、一个字符串列表和一个字符串)都是return值,但是chartdatasets列表在结果中是空的称呼。当我单步执行服务器端的代码时,它会被填充。
我是否必须对 return 复杂对象数组做一些特殊的事情?
[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": [
{}
]
}
我没有post ChartDataSet 的定义,但事实证明这就是问题所在。从与同事的讨论中,我们发现 ChartDataSet 属性没有被封装。将 {get;set} 添加到每个我想在 API 中 return 的属性后,它似乎工作正常。
[Serializable]
public class ChartDataSet {
public string label {get;set;}
public string backgroundColor {get;set;}
public List<double> data {get;set;}
public ChartDataSet(string lbl, string bgcolor, List<double> datavalue)
{
label = lbl;
backgroundColor = bgcolor;
data = datavalue;
}
}