Обработка ошибки, вызванной десериализацией нулевого значения - PullRequest
0 голосов
/ 15 мая 2018

У меня есть файл Json, который может содержать логические значения с нулевым значением. Если я пытаюсь десериализовать эти логические значения, я получаю исключение InvalidCastException, потому что логические значения не обнуляются.

Строка, вызывающая исключение:

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

Как я могу справиться с этим, чтобы не получить исключение? поймать ошибку и добавить ее в список, а затем продолжить метод. Вместо взлома приложения, как сейчас.

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Вы можете определить JsonSerializerSettings для обработки ошибки. Так что эта программа не выбрасывает исключение. Однако в этом случае для свойства будет установлено значение по умолчанию, если невозможно преобразовать / привести.

var settings = new JsonSerializerSettings
                    {
                        Error = (sender, args) => { args.ErrorContext.Handled = true; }
                    };
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);

Вы можете прочитать об этом на этой ссылке на документацию Newtonsoft.

0 голосов
/ 15 мая 2018

Создать новый экземпляр JsonSerializerSettings ..

var settings = new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore
                    };
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);
...