Обработка ошибки десериализации

У меня есть класс для десериализации из json

class SeeSharp
{
   public int Number;  
}

Хороший json похож на что-то

{Номер 1}

Неправильный json, исходящий из PHP,

{Число: ложь}

Я использую следующий способ обработки ошибки десериализации: http://blog.mrlacey.co.uk/2012/03/debugging-deserialization-errors-in.html

Когда не удается прочитать член типа string/int/double/bool/etc, я хотел бы установить его значение по умолчанию для этого типа и пометить эту ошибку как обработанную.

В настоящее время делегат JsonSerializationSettings.Error не не позволяет установить значение для отказавшего члена и не показывает никакой информации о типе отказавшего члена.

Если есть возможность сделать это по-другому, было бы здорово узнать об этом.


person Alex Sorokoletov    schedule 02.08.2012    source источник
comment
На самом деле у меня есть много классов для десериализации.   -  person Alex Sorokoletov    schedule 02.08.2012


Ответы (1)


Вы можете использовать этот класс?

public class SeeSharp
{
    public string Number
    {
        get
        {
            return _number.ToString();
        }

        set
        {
            if (!int.TryParse(value, out _number))
                _number = default(int);
        }
    }

    public int _Number { get; set; }
}

JsonConvert будет использовать строковое свойство Number для установки данных, которые обрабатывают сам синтаксический анализ. А затем используйте свойство _Number в своем коде как int

person Nirmit Kavaiya    schedule 02.08.2012
comment
Да, могу, но таких классов и полей у меня много. Чтобы украсить их таким образом, нужно время. Был бы план Б :) - person Alex Sorokoletov; 02.08.2012