【发布时间】:2020-10-11 22:34:01
【问题描述】:
我想从数据表中生成 json,我已经尝试过了
public static JsonResult ConvertFromDataTable(DataTable dataTable)
{
var result = new List<dynamic>();
foreach (DataRow row in dataTable.Rows)
{
dynamic dyn = new ExpandoObject();
foreach (DataColumn column in dataTable.Columns)
{
var dic = (IDictionary<string, object>)dyn;
dic[column.ColumnName] = row[column];
}
result.Add(dyn);
}
string _json = JsonConvert.SerializeObject(result);
var resultJSON = new JsonResult
{
Data = JsonConvert.DeserializeObject(_json),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
return resultJSON;
}
但结果总是在我的 json 上有“ContentEncoding”、“ContentType”,
{
"ContentEncoding": null,
"ContentType": null,
"Data": [
{
"Name": "Steve",
"Age": "30",
"Photo": "steve.png",
"Gender": "Male"
},
{
"Name": "Sarah",
"Age": "19",
"Photo": "sarah.png",
"Gender": "Female"
}
],
"JsonRequestBehavior": 0,
"MaxJsonLength": null,
"RecursionLimit": null
}
我只需要我的 json 中的“数据”,可以删除它吗?
【问题讨论】:
-
真的需要返回JsonResult吗?
-
我的意思是,你可以从 Api 返回强类型的结果,它也将是 json
-
@RomanKalinchuk 更好的是,它将是调用者请求的 JSON 或 XML(甚至更多)
-
@SirRufo 是的,但默认可以是 json。或不。没有框架版本还不清楚:) 但仍然很容易配置
-
还记录了如何从 api 控制器返回数据Tutorial: Create a web API with ASP.NET Core: Return Values