ASP.NET web api返回XML而不是JSON 怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (559)

我读了默认情况下,Web API将返回JSON数据,但由于某种原因,在创建API时,它会返回XML而不是JSON。

public class CurrencyController : ApiController
{
    private CompanyDatabaseContext db = new CompanyDatabaseContext();

    // GET api/Currency
    public IEnumerable<Currency> GetCurrencies()
    {
        return db.Currencies.AsEnumerable();
    }
}
提问于
用户回答回答于

如果你修改WebApiConfig,默认情况下,你将得到JSON。

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,则应该在标题中包含Content-Type:application / json

扫码关注云+社区

领取腾讯云代金券