该方法的文档JsonSerializer.Deserialize
中显示的返回类型均将返回类型显示为可为空。
如果您查看MS 文档中的反序列化示例,您会发现它们不一致,因为第一个和第三个将返回类型指定为可为空...
WeatherForecast? weatherForecast =
JsonSerializer.Deserialize<WeatherForecast>(jsonString);
Run Code Online (Sandbox Code Playgroud)
...而第二个示例缺少?
,这意味着它不可为空。
通过实验,似乎只要您提供有效的 JSON(否则会出现异常),那么返回值始终是指定类型的非空对象。如果属性名称不匹配,则返回的对象将具有这些属性的默认值,但您永远不会获得空引用 - 或者至少,我找不到方法。
有谁能澄清一下吗?是否存在该方法可以返回null
而不抛出异常的情况?如果不是,为什么返回类型指定为可为空?
谢谢
Ale*_*kov 14
Yes, parsing valid JSON "null"
with a JSON serializer have to return null
.
WeatherForecast? weatherForecast =
JsonSerializer.Deserialize<WeatherForecast>("null");
Run Code Online (Sandbox Code Playgroud)
Note that other valid JSON strings like "123"
, "\"bob\""
, "[]"
should cause an exception because none of them represent a valid object.
归档时间: |
|
查看次数: |
4907 次 |
最近记录: |