Я хотел бы вернуть JSON из контроллера Web Api 2.Мой текущий код не работает с включенными свойствами.Мой метод получения:
[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.
Желаемая структура JSON:
[
{
"Iso3": "AL",
"CountryNameEnglish": "Alaska",
"Regions": [
{
"RegionCode": "AL1",
"Iso3": "AL",
"RegionNameEnglish": "Alaskan Region 1"
},
{
"RegionCode": "AL2",
"Iso3": "AL",
"RegionNameEnglish": "Alaskan Region 2"
}
]
}
]
Кто-нибудь знает, как с этим справиться?