Asp.net 从WebAPI操作方法返回单个元素而不是数组

Asp.net 从WebAPI操作方法返回单个元素而不是数组,asp.net,json,asp.net-web-api,Asp.net,Json,Asp.net Web Api,这是我在asp.net web api控制器中的代码 [Route("~/GetLoginEmployeeInfo")] public DataTable GetLoginEmployeeInfo() { DataTable dtUserInfo = new DataTable(); Hashtable htMenuList = new Hashtable(); htMenuList.Add("LoginKey", 20160

这是我在asp.net web api控制器中的代码

   [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”,“全名”:“Md Delower Hossain”}

出于编程目的,应省略括号[]。我能做什么?

您的代码返回“标准JSON格式”,它只是一个数组

这是因为DataTable包含一个数据表,正如其名称已经给出的那样。即使该表包含一行,其数据也将作为数组返回,在本例中是一个长度为一个元素的数组

如果始终只想返回第一行,请执行以下操作:

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

考虑创建一个保存这些属性的模型类,而不是数据表。

不幸的是,
DataRow
不可序列化,因此这可能会失败。不过,正如您所写,使用自定义类也可以工作。如果不从数据表返回数组,它不可能返回对象吗?因为数据表有很多行。@Md.DelowerHossain“数据表有很多行”-那么为什么不想返回数组?linq优先还是默认?返回dtUserInfo.FirstOrDefault()@布莱恩·德林格·蒂,这是工作