我正在使用 Newtonsoft json.NET 解析器进行 JSON 解析。在我的反序列化中,我有以下代码,因此从 String 转换为 Int 时的错误不会迫使我丢弃整个对象:
var param2 = new JsonSerializerSettings
{
Error = delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
{
args.ErrorContext.Handled = true;
}
};
bcontent = JsonConvert.DeserializeObject<BContent>(json, param2);
我无法控制输入数据,并且解析错误非常常见,因此我需要足够多才多艺来处理它们。不幸的是,将所有错误标记为已处理会导致反序列化在受限环境中遇到不同错误时不会终止。
我想要做的是将错误标记为已处理,当它们属于具有类似消息的类型时:
Could not convert string to integer....
但不是当它们不同时,例如导致挂起的此错误:
Unterminated string. Expected delimiter...
我能做的是这样的:
Error = delegate(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs args)
{
if (args.ErrorContext.Error.Message.Contains("convert string to integer"))
args.ErrorContext.Handled = true;
}
但似乎没有其他方法可以确定比JsonReaderException
. 以前有没有人遇到过这个问题并找到了比 a 更好的解决方法String.Contains()
?