2017-01-30 7 views
1

ここはasp.net web-apiコントローラのコードです。WebAPIのアクションメソッドから配列の代わりに単一の要素を返します

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

を私のようにJSONのために結果を持っている:[{"EmpID":"20160636","FullName":"Md Delower Hossain"}]

しかし、私は次のようにすることを望む:{"EmpID":"20160636","FullName":"Md Delower Hossain"}

カッコ[私が追加しているWebApiConfigで

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

]はプログラミング目的のために省略する必要があります。私に何ができる?

+0

linq firstまたはdefault workはありますか? return dtUserInfo.FirstOrDefault(); –

答えて

0

コード "標準JSON形式"を返します。これは単なる配列です。

これは、DataTableにはすでに名前が分かれているため、データテーブルが含まれているためです。テーブルに1つの行が含まれていても、そのデータは配列として返されます。この場合、1つの要素の配列が長くなります。

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

ではなく、データテーブルのこれらの性質を保持しているモデルクラスを作成することを検討して:あなたはいつもちょうど最初の行を返すようにしたい場合は

、その後、それを行います。

+0

残念ながら 'DataRow'はシリアライズ可能ではありませんので、これは失敗する可能性があります。あなたが書いたように、カスタムクラスを使うこともできます。 – user1429080

+0

データテーブルから配列を返さずにオブジェクトを返すことはできないのですか?データテーブルには多くの行があるためです。 –

+0

@ Md.DelowerHossain _ "データテーブルには多くの行があります" _ - なぜ配列を返さないのですか? – CodeCaster

関連する問題