13

默认情况下是否可以从 ASP.NET Web API 而不是 XML 返回 json?

4

2 回答 2

18

这是默认完成的。JsonMediaTypeFormatter注册为第一个MediaTypeFormatter,如果客户端未请求特定格式的响应,ASP.NET Web API 管道会为您提供application/json格式响应。

如果您只想支持application/json,请删除所有其他格式化程序并仅离开JsonMediaTypeFormatter

public static void Configure(HttpConfiguration config) {

    var jqueryFormatter = config.Formatters.FirstOrDefault(x => x.GetType() == typeof(JQueryMvcFormUrlEncodedFormatter));
    config.Formatters.Remove(config.Formatters.XmlFormatter);
    config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter);
    config.Formatters.Remove(jqueryFormatter);
}
于 2012-12-01T18:08:18.803 回答
8

@tugberk 的解决方案并没有真正实现更改默认格式化程序的目标。它只是让 JSON 成为唯一的选择。如果您想将 JSON 设为默认值并仍支持所有其他类型,则可以执行以下操作:

public static void Configure(HttpConfiguration config) {
    // move the JSON formatter to the front of the line
    var jsonFormatter = config.Formatters.JsonFormatter;
    config.Formatters.Remove(jsonFormatter);
    config.Formatters.Insert(0, jsonFormatter);
}

注意:JSON 是 Web API 2.0 的默认格式化程序。

于 2014-05-15T19:27:00.540 回答