在网络 API 响应中写入 JSON 数组

Writing JSON array in web API response

需要这样的 JSON 回复:

{
        "statusCode": 200,
        "errorMessage": "Success",
        "Employees": [
                {
                "empid": "7228",
                "name": "Tim",
                "address": "10815 BALTIMORE",
                
                },
               {
                "empid": "7240",
                "name": "Joe",
                "address": "10819 Manasas",
                }
            ]
}

型号Class:

public class EmployeeList
{
    public string empid { get; set; }
    public string name { get; set; }
    public string address { get; set; }
}


public class Employee
{
     public int statusCode { get; set; }
     public string errorMessage{ get; set; }
     public List<EmployeeList> Employees { get; set; }
}

控制器是这样的:

List<Models.Employee> emp = new List<Models.Employee>();
//call to SP
if (rdr.HasRows)
    {
           
                var okresp = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    ReasonPhrase = "Success"
                };

                Models.Employee item = new Models.Employee();
                {
                    item.statusCode = Convert.ToInt32(okresp.StatusCode);
                    item.errorMessage = okresp.ReasonPhrase;
               
                    
                    while (rdr.Read())
                    {
                        item.Employees = new List<EmployeeList>{
                        new EmployeeList
                        { 
                            empid = Convert.ToString(rdr["empid"]),
                            name = Convert.ToString(rdr["name"]),
                            address = Convert.ToString(rdr["address"]) 
                        }};
                     }
                    
                };

    emp.add(item);

// return response

当我从 reader 读取数据时,我的控制器 class 代码应该是什么来创建 JSON 数组响应? 我无法获得在响应文件中创建 JSON 数组的循环部分。我在 While 循环中赋值不正确吗?

while (rdr.Read()) 之后,您在每个数据处用 new List<EmployeeList> 重置了 item.Employees。所以你每次都会得到最后一个元素。

将您的列表初始化移到循环之外并使用 add 方法。

item.Employees = new List<EmployeeList>();
while (rdr.Read())
{
    item.Employees.Add(
        new EmployeeList
        { 
            empid = Convert.ToString(rdr["empid"]),
            name = Convert.ToString(rdr["name"]),
            address = Convert.ToString(rdr["address"]) 
        });
}