У меня есть .Net Core 3 Api, когда я использую Netonsoft для выполнения привязки модели.
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.Configure<KestrelServerOptions>(options => { options.AllowSynchronousIO = true; });
services.Configure<IISServerOptions>(options => { options.AllowSynchronousIO = true; });
services.AddOptions();
services.AddMvcCore().SetCompatibilityVersion(CompatibilityVersion.Version_3_0).AddNewtonsoftJson();
services.AddHealthChecks()
.AddCheck<ApiHealthCheck>("api");
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
app.UseHealthChecks("/health");
}
}
В Api я ожидаю модель, похожую на:
public class Family
{
public Member Member1 { get; set; }
public Member Member2 { get; set; }
}
public class Member
{
public string FirstName { get; set; }
public List<string> LastNames { get; set; }
}
Сейчаскогда я публикую следующий Json, привязка модели дает мне семейный объект со значениями, взятыми из Json:
{
"member1": {
"firstName": "john",
"lastNames": [
"wick"
]
},
"member2": {
"firstName": "Rich",
"lastNames": null
}
}
Однако, когда я публикую следующий Json (значение фамилии - строка вместо массива):
{
"member1": {
"firstName": "john",
"lastNames": "wick"
},
"member2": {
"firstName": "Rich"
}
}
Я ожидаю получить объект Family с Member1 и Member2, имеющим только имя.
Но я получаю нулевое значение (в полученной модели не найдено семейство).
Следуеттакое поведение ожидать? и как сказать Newtonsoft игнорировать только фамилии вместо всей модели?