2017-01-30 36 views
1

這是我在asp.net web-api控制器中的代碼。從WebAPI操作方法返回單個元素而不是數組

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

在WebApiConfig我有加:

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

我已經得到了JSON作爲結果:[{"EmpID":"20160636","FullName":"Md Delower Hossain"}]

但我要的是以下:{"EmpID":"20160636","FullName":"Md Delower Hossain"}

括號[ ]應該爲我的編程目的而省略。我能做什麼?

+0

linq首先或默認工作? return dtUserInfo.FirstOrDefault(); –

回答

0

您的代碼返回「標準JSON格式」,它只是一個數組。

這是因爲一個DataTable包含,因爲它的名字已經給出了一個數據表。即使表中包含一行,其數據也會以數組的形式返回,在這種情況下,這是一個長度爲一個元素的數組。

如果你總是隻想返回第一行,那麼這樣做:

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

考慮創建一個擁有這些特性,而不是一個DataTable模型類。

+0

不幸的是'DataRow'不是可序列化的,所以這可能會失敗。正如你也寫到的那樣,使用自定義類將會起作用。 – user1429080

+0

如果不從數據表中返回一個數組,它會返回一個對象嗎?因爲數據表有很多行。 –

+0

@ Md.DelowerHossain _「數據表有很多行」_ - 那麼爲什麼你不想返回一個數組? – CodeCaster

相關問題