簡體   English   中英

什么情況下JsonConvert.DeserializeObject會返回null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM