处理因反序列化空值而导致的错误

时间:2018-05-15 11:44:07

标签: c# json error-handling

我有一个Json文件,可以包含空值的布尔值。 如果我尝试反序列化这些布尔值,我会得到一个InvalidCastException,因为布尔值不可为空。

触发异常的行:

var result = serializer.Deserialize(jObject.GetValue(propertyName).CreateReader(), type);

我如何处理这个问题,以免出现异常?捕获错误并将其添加到List,然后继续该方法。而不是应用程序破坏,就像现在一样。

2 个答案:

答案 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链接上阅读此内容。