.NET核心API-将值{null}转换为类型';System.Boolean';

.NET核心API-将值{null}转换为类型';System.Boolean';,.net,.net-core,asp.net-core-3.1,.net,.net Core,Asp.net Core 3.1,最近,我们将项目从.NET Framework迁移到了.NET Core 3.1 假设我们有一个定义为bool的属性,当我们试图从UI调用API时,它不接受null值,并出现以下错误 将值{null}转换为类型“System.Boolean”时出错 已尝试在启动中添加此项以解决此问题 services.AddControllers().AddJsonOptions(o => { o.JsonSerializerOptions.PropertyNami

最近,我们将项目从.NET Framework迁移到了.NET Core 3.1

假设我们有一个定义为
bool
的属性,当我们试图从UI调用API时,它不接受null值,并出现以下错误

将值{null}转换为类型“System.Boolean”时出错

已尝试在启动中添加此项以解决此问题

services.AddControllers().AddJsonOptions(o =>
        {
            o.JsonSerializerOptions.PropertyNamingPolicy = null;
            o.JsonSerializerOptions.DictionaryKeyPolicy = null;
        });

我已经修改了启动程序,它对我起了作用。谢谢大家的建议

        services.AddControllers()
            .AddNewtonsoftJson(options =>
            {
                options.UseMemberCasing();
//This will help us in accepting null  values to other properties types
                options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            });

它不接受空值
它从未接受过空值。在期望值类型为
bool
int
的变量或属性中,永远不可能存储
null
。这就是引入可空类型的原因。如果属性是
bool?
则只能存储
null
,但您发布的代码不会尝试设置任何
bool
属性。这些属性需要
JsonNamingPolicy
类,并且接受空值。发布实际导致编译的代码error@PanagiotisKanavos我们之前使用的.NET framework不是这样的。哪种代码不是这样的?你贴的东西有用。没有涉及到布尔人。你从哪里犯的错误?谷歌搜索显示这是一个JSON.NET错误,.NETCore3.1没有使用这个错误。您是否在尝试反序列化JSON字符串时出错?什么是json字符串,什么是目标对象?发布相关代码、JSON文本和完整的异常文本,而不仅仅是其中的一部分。您可以使用
Exception.ToString()
Nullable类型获得全文。不过,可空类型不是由.NET Core引入的,它们已经存在了好几年了。如图所示,您发布的错误消息也会出现在.NET Old中。不知何故,JSON中有一个
null
值。接收它的属性必须是
bool?
,而不是
bool
。也许您修改了JSON.NET的空处理行为?