2017-01-30 8 views
1

Hier ist mein Code in asp.net Web-API-Controller.Rückgabe eines einzelnen Elements anstelle eines Arrays aus einer WebAPI-Aktionsmethode

[Route("~/GetLoginEmployeeInfo")] 
    public DataTable GetLoginEmployeeInfo() 
    { 
     DataTable dtUserInfo = new DataTable(); 
     Hashtable htMenuList = new Hashtable(); 
     htMenuList.Add("LoginKey", 20160636); 
     htMenuList.Add("Passkey", 123);   
     dtUserInfo = DataTableByCommandFromStoredProc("GetUserByIDAndPass", htMenuList);   
     return dtUserInfo; } 

In WebApiConfig i hinzufügen haben:

config.Formatters.Remove(config.Formatters.XmlFormatter); 

ich das Ergebnis für json wie bekommen haben: [{"EmpID":"20160636","FullName":"Md Delower Hossain"}]

Aber ich möchte, dass wie die folgenden: {"EmpID":"20160636","FullName":"Md Delower Hossain"}

Die Klammer [ ] sollte für meinen Programmierzweck weggelassen werden. Was kann ich tun?

+0

funktioniert linq zuerst oder Standard funktioniert? Rückgabe dtUserInfo.FirstOrDefault(); –

Antwort

0

Ihr Code ist Rückgabe "Standard-JSON-Format", es ist nur ein Array.

Dies liegt daran, eine DataTable enthält, wie der Name schon sagt, eine Tabelle mit Daten. Selbst wenn die Tabelle eine Zeile enthält, werden ihre Daten als Array zurückgegeben, in diesem Fall ein Array mit einem Element lang.

Wenn Sie immer nur die erste Zeile zurückkehren möchten, dann tun:

public DataRow GetLoginEmployeeInfo() 
{ 
    // ... 
    return dataTable.Rows[0]; 
} 

Betrachten wir eine Modellklasse zu schaffen, die diese Eigenschaften anstelle eines Datatable hält.

+0

Leider ist 'DataRow' nicht serialisierbar, daher wird dies wahrscheinlich fehlschlagen. Die Verwendung einer benutzerdefinierten Klasse würde jedoch funktionieren, wie Sie auch geschrieben haben. – user1429080

+0

Ist es nicht möglich, dass ein Objekt zurückgegeben wird, ohne ein Array aus der Datentabelle zurückzugeben? Weil die Datentabelle viele Zeilen hat. –

+0

@ Md.DelowerHossain _ "Die Datentabelle hat viele Zeilen" _ - warum wollen Sie dann kein Array zurückgeben? – CodeCaster

Verwandte Themen