Typ*_*nda 5 c# asp.net json asp.net-web-api
因此,我正在编写一些Asp.Net WebApi代码,以与没有使用模型类的旧C#后端代码挂钩。(从DataAccess返回的纯dataTable,疯狂吧?我知道)
以下是我放在服务器端的代码。
public IHttpActionResult GetProduct(int campaignID, int productID)
{
var so = new SearchOptions(campaignID)
{
ProductID = productID
};
var result = SearchManager.Search(so);
if (result == null || result.Rows.Count == 0)
return NotFound();
return Ok(result.Rows[0]);
}
Run Code Online (Sandbox Code Playgroud)
我期望得到这样的响应:
{
Field1: "field1",
Field2: "field2",
...
}
Run Code Online (Sandbox Code Playgroud)
但是实际上我有这个:
{
"rowError": "",
"rowState": 2,
"table": [
{
Field1 : "field1",
Field2 : "field2",
...
}
],
"itemArray": ["field1","field2"],
"hasErrors": false
}
Run Code Online (Sandbox Code Playgroud)
我不希望所有这些rowError,rowState...等
如果我在服务器端这样做:
public IHttpActionResult GetProduct(int campaignID, int productID)
{
var so = new SearchOptions(campaignID)
{
ProductID = productID
};
var result = SearchManager.Search(so);
if (result == null || result.Rows.Count == 0)
return NotFound();
return Ok(result);
}
Run Code Online (Sandbox Code Playgroud)
我收到这个:
[{Field1: "field1", Field2: "field2"..}]
Run Code Online (Sandbox Code Playgroud)
不幸的ngResource是,由于它是一个数组而不是单个Json对象,因此get方法拒绝了它。
我该怎么办?如果我只想返回一个dataRow作为Json字符串。
理想情况下,我想避免像Manoz所建议的那样去创建响应对象。(不过谢谢您的回答Manoz)
谢谢
您可以使用 LINQ将您的转换DataRow为:Dictionary
public IHttpActionResult GetProduct(int campaignID, int productID)
{
var so = new SearchOptions(campaignID)
{
ProductID = productID
};
var result = SearchManager.Search(so);
if (result == null || result.Rows.Count == 0)
return NotFound();
var row = result.Rows[0];
return Ok(row.Table.Columns
.Cast<DataColumn>()
.ToDictionary(c => c.ColumnName, c => row[c]));
}
Run Code Online (Sandbox Code Playgroud)
该操作会根据您的需要返回 JSON:{ Field1: "field1", Field2: "field2", ... }
| 归档时间: |
|
| 查看次数: |
1268 次 |
| 最近记录: |