2017-01-30 38 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

相关问题