2015-11-30 3 views
5

次のサンプルコードは、従業員の2人を作成し、従業員リストに追加して、get要求で従業員リストを返すEmployeeControllerにあります。コードから返されたJSONには、ルートノードとしてのEmployeesが含まれています。 JSONの結果をオブジェクトにパースしようとするたびに、文字列を手動で再フォーマットしないとエラーが発生するため、Employeesプロパティを指定しないでJSON配列を返す必要があります。WebAPIルートノードのない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"} 
     ] 
} 

呼び出されたときに、これは私が私がとすべてのヘルプははるかに高く評価されて

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

を返さ必要なJSONの結果である受け取りますWEBAPIの新機能とJSON結果の解析

+0

あなたはどのようなエラーが発生していますか? APIを呼び出すコードは何ですか?私はクライアントコードの解析をリファクタリングして、デフォルトの振る舞いではなく、APIコードがかなりシンプルであるように見えます。 – Taegost

答えて

9

実際には0を返さないためが、List<Employee>のオブジェクト(EmployeeList)が含まれています。あなたは、リストが、その中に埋め込まれたリストを持つオブジェクトを返していない

2

それを囲むクラスなしEmployee[](従業員の配列)または単なるList<Employee>を返すために
変更。あなたのメソッドのシグネチャを変更します。

public List<Employee> Get() 

そして唯一のリストを返す:

return empList.Employees; 
関連する問題