You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ASP.NET Web API中添加NewtonsoftJson后如何获取JSON响应?

解决ASP.NET Web API添加AddNewtonsoftJson后默认返回XML的问题

当在ASP.NET Web API中添加AddNewtonsoftJson()后默认返回XML,是因为XML格式器的优先级高于Newtonsoft JSON格式器导致的。以下是几种可行的解决方式:

方案一:调整格式器优先级,让JSON格式器优先

修改Controllers配置,将Newtonsoft JSON格式器移到输出格式器集合的首位,确保它被优先使用:

builder.Services.AddControllers(options =>
{
    options.ReturnHttpNotAcceptable = true;
    
    // 定位并调整Newtonsoft JSON格式器的优先级
    var jsonFormatter = options.OutputFormatters.OfType<NewtonsoftJsonOutputFormatter>().FirstOrDefault();
    if (jsonFormatter != null)
    {
        options.OutputFormatters.Remove(jsonFormatter);
        options.OutputFormatters.Insert(0, jsonFormatter);
    }
})
.AddXmlDataContractSerializerFormatters()
.AddNewtonsoftJson();

方案二:在AddNewtonsoftJson中配置默认媒体类型

通过AddNewtonsoftJson的配置项,明确指定JSON格式器的支持媒体类型,提升其优先级:

builder.Services.AddControllers(options =>
{
    options.ReturnHttpNotAcceptable = true;
})
.AddXmlDataContractSerializerFormatters()
.AddNewtonsoftJson(options =>
{
    // 可选:设置JSON格式美化
    options.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
    
    // 确保JSON媒体类型被优先识别
    foreach (var formatter in options.OutputFormatters.OfType<NewtonsoftJsonOutputFormatter>())
    {
        formatter.SupportedMediaTypes.Add(Microsoft.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"));
    }
});

方案三:请求头指定Accept为application/json

在Postman的请求头中添加Accept: application/json,强制服务器返回JSON格式。此方式适合单请求场景,若需全局默认返回JSON,优先使用前两种方案。

内容的提问来源于stack exchange,提问作者HyperSquid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:15:50