2015-11-30 2 views
5

Ich habe den folgenden Beispielcode in einem EmployeeController, der ein paar Mitarbeiter erstellt, sie zu einer Mitarbeiterliste hinzufügt und dann die Mitarbeiterliste für eine Abrufanforderung zurückgibt. Der zurückgegebene JSON aus dem Code enthält Mitarbeiter als Stammknoten. Ich muss ein JSON-Array ohne die Employees-Eigenschaft zurückgeben, da jedes Mal, wenn ich versuche, das JSON-Ergebnis für Objekte zu parsen, ich Fehler erhalte, wenn ich die Zeichenfolge manuell neu formatiere, um sie nicht einzuschließen.WebAPI JSON-Array ohne Stammknoten zurückgeben

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

Dies ist das JSON Ergebnis, das ich erhalte, wenn der Controller

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

Jede Hilfe

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

geschätzt wird viel genannt wird, wie ich bin Dies ist das JSON-Ergebnis, das ich zurück brauchen Neu in WEBAPI und Analysieren der JSON-Ergebnisse

+0

Welche Fehler werden Sie bekommen? Was ist der Code, der die API aufruft? Ich würde eher das Refactoring der Client-Code-Analyse betrachten, anstatt viel mit dem Standardverhalten zu versuchen, es sieht so aus, als wäre Ihr API-Code ziemlich einfach, ich würde es so behalten. – Taegost

Antwort

9

Das passiert, weil Sie nicht tatsächlich eine 0 zurückgebenaber ein Objekt (EmployeeList), das eine List<Employee> enthält.
ändern, die Employee[] (ein Array von Employee) oder eine bloßen List<Employee> ohne Klasse umgebenden zurückzukehren

2

Sie sind nicht eine Liste, sondern ein Objekt mit eingebetteter Liste darin zurück. Ändern einer Signatur Ihrer Methode zu:

public List<Employee> Get() 

Und dann nur Liste zurück:

return empList.Employees;