.NET核心API-将值{null}转换为类型';System.Boolean';
最近,我们将项目从.NET Framework迁移到了.NET Core 3.1 假设我们有一个定义为.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
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的空处理行为?