ASP.NET web api returning XML instead of JSON
本问题已经有最佳答案,请猛点这里访问。
我了解到,默认情况下,Web API将返回JSON数据,但由于某种原因,在创建API时,它返回XML而不是JSON。
1 2 3 4 5 6 7 8 9 10 | public class CurrencyController : ApiController { private CompanyDatabaseContext db = new CompanyDatabaseContext(); // GET api/Currency public IEnumerable<Currency> GetCurrencies() { return db.Currencies.AsEnumerable(); } } |
我没有修改任何不寻常的东西,所以我被难住了
如果按如下方式修改webapiconfig,默认情况下会得到json。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name:"DefaultApi", routeTemplate:"api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType =="application/xml"); config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType); } } |
Web API查找即将到来的请求的头以选择返回的数据类型。例如,如果设置accept:application/json,它将自动将返回类型设置为json。
此外,设置内容类型还为Web API提供了有关即将到来的请求数据类型的线索。所以,如果您想将JSON数据发布到Web API,那么您应该在头文件中有内容类型:application/json。