我想从Web Api 2控制器返回JSON。我当前的代码不适用于“包含的”属性。我的获取方法是:
[System.Web.Mvc.HttpGet]
public IQueryable<Employee> GetEmployee()
{
return db.Employee.Include(x=>x.Department);
}
我已将以下行添加到我的WebApiConfig中:
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
明白了,我得到这个错误:
'ObjectContent`1'类型无法序列化响应主体 内容类型'application / json; charset = utf-8'。
当我使用标准控制器(不是Api控制器)时,我的代码是:
[HttpGet]
public ActionResult GetCountries()
{
var countries = JsonConvert.SerializeObject(db.Countries.Include(x => x.Regions), Formatting.None, new JsonSerializerSettings() {ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore });
return Content(countries, "application/json");
}
但是Content()是特定于Controller类的,我想它不能在WebApi Controller中使用。
所需的JSON结构为:
[
{
"Iso3": "AL",
"CountryNameEnglish": "Alaska",
"Regions": [
{
"RegionCode": "AL1",
"Iso3": "AL",
"RegionNameEnglish": "Alaskan Region 1"
},
{
"RegionCode": "AL2",
"Iso3": "AL",
"RegionNameEnglish": "Alaskan Region 2"
}
]
}
]
有人知道如何处理吗?
答案 0 :(得分:0)
我想了很久:
scp