【问题标题】:WebAPI Return JSON array without root nodeWebAPI 返回没有根节点的 JSON 数组
【发布时间】:2015-11-30 20:35:10
【问题描述】:

我在 EmployeeController 中有以下示例代码,它创建了几个员工,将他们添加到员工列表中,然后在获取请求时返回员工列表。从代码返回的 JSON 包括员工作为根节点。我需要返回一个不带Employees 属性的JSON 数组,因为每当我尝试将JSON 结果解析为对象时都会出错,除非我手动重新格式化字符串以不包含它。

public class Employee
{
    public int EmployeeID { get; set; }
    public string Name { get; set; }
    public string Position { get; set; }
}

public class EmployeeList
{
    public EmployeeList()
    {
        Employees = new List<Employee>();
    }
    public List<Employee> Employees { get; set; }
}


public class EmployeeController : ApiController
{
    public EmployeeList Get()
    {
        EmployeeList empList = new EmployeeList();
        Employee e1 = new Employee
        {
            EmployeeID = 1,
            Name = "John",
            Position = "CEO"
        };
        empList.Employees.Add(e1);
        Employee e2 = new Employee
        {
            EmployeeID = 2,
            Name = "Jason",
            Position = "CFO"
        };
        empList.Employees.Add(e2);

        return empList;
    }
}

这是我在调用控制器时收到的 JSON 结果

{
    "Employees":
        [
           {"EmployeeID":1,"Name":"John","Position":"CEO"},     
           {"EmployeeID":2,"Name":"Jason","Position":"CFO"}
        ]
}

这是我需要返回的 JSON 结果

[
    {"EmployeeID":1,"Name":"John","Position":"CEO"},     
    {"EmployeeID":2,"Name":"Jason","Position":"CFO"}
]

非常感谢任何帮助,因为我是 WEBAPI 和解析 JSON 结果的新手

【问题讨论】:

  • 您遇到了什么错误?调用 API 的代码是什么?我会更多地关注重构客户端代码解析而不是尝试使用默认行为,看起来您的 API 代码非常简单,我会保持这种方式。

标签: c# json json.net asp.net-web-api2


【解决方案1】:

发生这种情况是因为您实际上返回的不是List&lt;Employee&gt;,而是一个包含List&lt;Employee&gt; 的对象(EmployeeList)。
将其更改为返回 Employee[](Employee 数组)或仅返回 List&lt;Employee&gt; 而没有围绕它的类

【讨论】:

    【解决方案2】:

    您返回的不是一个列表,而是一个包含嵌入列表的对象。将方法的签名更改为:

    public List<Employee> Get()
    

    然后只返回列表:

    return empList.Employees;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-30
      • 2011-06-17
      • 2016-09-13
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2017-04-16
      相关资源
      最近更新 更多