当我尝试反序列化 JSON 时,Net 6 要求所有不可为空的字段

问题描述 投票:0回答:1

我正在将应用程序从 .Net 标准转换为 .Net 6,但如果我不传入所有不可为空的字段,我的控制器会抛出错误。 例如

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string CustomerType { get; set; }
}

当我尝试将该对象传递给没有某个字段的操作时,它会抛出类似“FirstName 字段是必需的”的错误。 我该如何解决这个问题? 我通过启动文件使用 NewtonSoft,如下所示:

builder.Services.AddControllers()
    .AddNewtonsoftJson(options => 
    { 
        options.UseMemberCasing();
    });

builder.Services.AddControllersWithViews()
    .AddNewtonsoftJson(options =>
    {
        options.UseMemberCasing();
    });
serialization json.net .net-6.0
1个回答
1
投票

最简单的方法是打开项目配置文件(只需在 VS 解决方案资源管理器中单击项目名称)并删除选项 nullable

<PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>disable</Nullable>   <!-- change from enable or remove --> 
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

或者,如果您只想在控制器操作中禁用可空检查,您可以尝试另一个选项:

builder.Services.AddControllers(
    options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true);
© www.soinside.com 2019 - 2024. All rights reserved.