【发布时间】:2021-06-02 13:19:58
【问题描述】:
最近我们将项目从 .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;
});
【问题讨论】:
-
it's not accepting values as null从来没有。永远不可能将null存储在需要bool或int之类的值类型的变量或属性中。这就是引入可空类型的原因。如果属性是bool?,则只能存储null -
您发布的代码并没有尝试设置任何
bool属性。这些属性需要JsonNamingPolicy类并且do 接受空值。贴出实际导致编译错误的代码 -
@PanagiotisKanavos 我们之前使用的.NET框架不是这样的。
-
不是哪个代码的情况吗?你发布的作品。不涉及布尔值。你从哪里得到这个错误?谷歌搜索显示这是一个 JSON.NET 错误,它 not 被 .NET Core 3.1 使用。您是否在尝试反序列化 JSON 字符串时遇到错误? json字符串是什么,目标对象是什么?发布相关代码、JSON 文本和完整的异常文本,而不仅仅是其中的一部分。可通过
Exception.ToString()获取全文 -
Nullable 类型不是由 .NET Core 引入的,它们存在 几年 年。您发布的错误消息也会出现在 .NET Old 中,as this possibly duplicate question 显示。不知何故,您的 JSON 中有一个
null值。接收它的属性必须是bool?,而不是bool。也许您修改了 JSON.NET 的 null 处理行为?
标签: .net .net-core asp.net-core-3.1