Newtonsoft.Json.DeserializeObject会抛出哪些异常?我想要处理它们。
Newtonsoft.Json.DeserializeObject会抛出哪些异常?我想要处理它们。
JSON.NET 定义了以下异常:
JsonException
JsonReaderException
JsonSerializationException
(序列化或反序列化错误通常会导致此异常)JsonWriterException
JsonSchemaException
JsonSerializationException
,但要确保您必须询问作者或查看源代码...无论如何,如果您希望确保不遗漏任何内容,可以捕获JsonException
,因为所有的JSON.NET异常都继承自它。 - Thomas LevesqueJsonSerializationException
异常。但是,如果我输入的内容完全不是 JSON 格式(比如只是一个单词或 HTML 代码),程序就会抛出 JsonReaderException
异常。 - jackofallcodeJsonConvert.DeserializeObject
进行反序列化时,我遇到了一个JsonReaderException
异常(而不是JsonSerializationException
)。 - twinlakesMessage
属性,而不是基于Exception
类型处理,因为不同类型似乎更倾向于您正在执行的操作而不是错误类别。在以下示例代码中,args.ErrorContext.Error
是Exception
的一个实例。List<string> errors = new List<string>();
List<DateTime> c = JsonConvert.DeserializeObject<List<DateTime>>(@"[
'2009-09-09T00:00:00Z',
'I am not a date and will error!',
[
1
],
'1977-02-20T00:00:00Z',
null,
'2000-12-01T00:00:00Z'
]",
new JsonSerializerSettings
{
Error = delegate(object sender, ErrorEventArgs args)
{
errors.Add(args.ErrorContext.Error.Message);
args.ErrorContext.Handled = true;
},
Converters = { new IsoDateTimeConverter() }
});
// 2009-09-09T00:00:00Z
// 1977-02-20T00:00:00Z
// 2000-12-01T00:00:00Z
// The string was not recognized as a valid DateTime. There is a unknown word starting at index 0.
// Unexpected token parsing date. Expected String, got StartArray.
// Cannot convert null value to System.DateTime.
这个问题是在 JsonReaderException 下处理的。
catch (JsonReaderException)
{
//handle your exception here
}