如何强制ASP.NETWebAPI始终返回JSON?

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

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

ASP.NET Web API默认进行内容协商 - 将根据Accept标题返回XML或JSON或其他类型。我不需要/不需要,有没有一种方法(如属性或其他)来告诉Web API始终返回JSON?

提问于
用户回答回答于

仅支持ASP.NET Web API中的JSON - 正确的方法

用JsonContentNegotiator替换IContentNegotiator:

var jsonFormatter = new JsonMediaTypeFormatter();
//optional: set serializer settings here
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));

执行情况:

public class JsonContentNegotiator : IContentNegotiator
{
    private readonly JsonMediaTypeFormatter _jsonFormatter;

    public JsonContentNegotiator(JsonMediaTypeFormatter formatter) 
    {
        _jsonFormatter = formatter;    
    }

    public ContentNegotiationResult Negotiate(
            Type type, 
            HttpRequestMessage request, 
            IEnumerable<MediaTypeFormatter> formatters)
    {
        return new ContentNegotiationResult(
            _jsonFormatter, 
            new MediaTypeHeaderValue("application/json"));
    }
}
用户回答回答于

清除所有格式化程序并添加Json格式化程序。

GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new JsonMediaTypeFormatter());

我把它添加到Global.asax里面Application_Start()

扫码关注云+社区

领取腾讯云代金券