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;
    }
}