.NET 8 - JSON 值无法从 Swagger 转换为 System.Int32

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

在 .NET 4.7.2 中,不可为 null 的字段不会在以下负载中产生错误。但是,升级到 .NET 8 后,现在会抛出错误

The JSON value could not be converted to System.Int32".

有效负载:

{
  "Party": {
    "Id": null
  },
  "Organization": {
    "Id": 3
  }
}

DTO

public class Invoice
{
    public Party Party { get; set; }

    public OrganizationParty Organization { get; set; }
}

public class Party
{
    public int Id { get; set; }
}

public class OrganizationParty
{
    public int Id { get; set; }
}

这是Program.cs

builder.Services.AddControllers(configure =>
{
    configure.Filters.Add<ExceptionFilterAttribute>();
    configure.AllowEmptyInputInBodyModelBinding = true;
}).AddJsonOptions(opt => opt.JsonSerializerOptions.PropertyNamingPolicy = null);

我们如何在.NET8中解决这个问题。

swagger-ui .net-8.0
1个回答
0
投票

Id
属性应该设为可为空 -
int?
- 因为您试图将
null
值分配给
Int32
,这是一个 值类型,因此不接受 null。

© www.soinside.com 2019 - 2024. All rights reserved.