据官方documentation称,方法JsonSerializer.Deserialize<TValue>(String, JsonSerializerOptions)的返回值为TValue?.然而,遗憾的是,文档没有提到在哪些情况下返回null,我也找不到这样的情况.

例如,对于以下代码(使用JsonSerializerOptions参数的默认值):

record Test(string Whatever);
...
string json = ...;
Test? result = JsonSerializer.Deserialize<Test>(json);

何时将result设置为null

推荐答案

例如,null JSON literal将导致相应的对象被反序列化为null:

string json = "null";
Test? result = JsonSerializer.Deserialize<Test>(json); 
Console.WriteLine(result is null); // "True"

Csharp相关问答推荐

在C# 11之前, struct 中的每个字段都必须显式分配?不能繁殖

ß != ss与ICU进行不区分大小写的比较

如何禁用ASP.NET MVP按钮,以便无法使用开发人员控制台重新启用它

为什么我不能更改尚未设置的模拟对象属性的值?

Azure Function应用(. NET 8)不将信息记录到应用洞察

使页面内容居中

Blazor WebApp:原始异常:AADSTS700025:客户端是公共的,因此既不应显示客户端,也不应显示客户端

ASP.NET Core AutoMapper:如何解决错误 CS0121调用在以下方法或属性之间不明确

在静态模式下实例化配置

由于POST中的应用程序/JWT,出现不支持的内容类型异常

如何在毛伊岛应用程序中完美地同步视图模型和视图的加载?

C#使用TextFieldParser读取.csv,但无法使用";0";替换创建的列表空条目

如何向事件添加成员

Azure函数-在外部启动类中生成配置时出错

如何在Akka.NET中重新启动执行元时清除邮箱

为什么Azure函数(独立工作进程)索引失败?使用Azure App配置的CosmosDbTrigger绑定失败,未解析为值

C# Winforms:从对象树到TreeView的递归转换重复条目

如何在单击按钮后多次异步更新标签

如何消除Visual Studio错误,因为它不识别集合表达式的新C#12语法?

WPF:如何从DatagridHeader的内容模板绑定到词典项