当包含下划线的属性名称在 ASP .Net Core Web API 序列化时会导致问题,解决方法是在 Web API 项目中增加以下代码:
在 Startup.cs 文件中,在 ConfigureServices 方法中添加以下代码:
services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
这是因为默认情况下,ASP .Net Core Web API 序列化程序会忽略属性名称中的下划线,导致序列化问题。通过指定 DefaultContractResolver,这将明确告诉序列化器包括属性名称中的下划线。
下面是完整代码:
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Newtonsoft.Json.Serialization;
namespace WebApiSerializationIssues { public class Startup { public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc();
}
}
}