[英]Under what circumstances will JsonConvert.DeserializeObject return null
Newtonsoft.Json (Json.NET) 中的方法JsonConvert.DeserializeObject()
方法的簽名是:
public static object? DeserializeObject(string value)
源代碼在這里。
該方法(及其所有重載)返回一個可為空的 object。 我想知道什么情況下會返回null? 我一直認為這種方法要么在反序列化不成功的情況下拋出Newtonsoft.Json.JsonException
,要么在反序列化成功的情況下拋出正確構造的 object。 官方文檔也無助於解釋可空性。
一種可能的情況是異常由自定義處理程序處理。 該方法是否還有其他情況可以返回 null?
var obj = JsonConvert.DeserializeObject<MyObject>("invalid json", new JsonSerializerSettings
{
Error = (sender, args) => args.ErrorContext.Handled = true
});
// obj is null here?
正如@Lasse V. Karlsen 在評論中提到的那樣,以下代碼將返回null
JsonConvert.DeserializeObject<SomeClass>("")
// or
JsonConvert.DeserializeObject<SomeClass>("null")
這同樣適用於任何財產的價值
JsonConvert.DeserializeObject<SomeClass>("{someProp : null}")
請注意,實際的null
字符串將引發ArgumentNullException
JsonConvert.DeserializeObject<SomeClass>(null)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.