我有一个Json文件,可以包含空值的布尔值。 如果我尝试反序列化这些布尔值,我会得到一个InvalidCastException,因为布尔值不可为空。
触发异常的行:
var result = serializer.Deserialize(jObject.GetValue(propertyName).CreateReader(), type);
我如何处理这个问题,以免出现异常?捕获错误并将其添加到List,然后继续该方法。而不是应用程序破坏,就像现在一样。
答案 0 :(得分:4)
创建一个新的JsonSerializerSettings实例..
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);
答案 1 :(得分:0)
您可以定义JsonSerializerSettings
来处理错误。所以该程序不会抛出异常。但是,在这种情况下,如果无法转换/转换,属性将设置为默认值。
var settings = new JsonSerializerSettings
{
Error = (sender, args) => { args.ErrorContext.Handled = true; }
};
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);
您可以在this Newtonsoft doc链接上阅读此内容。