2014-12-22 4 views
1

Мой клиент хочет получать и отправлять объекты DateTime моему замечательному сервису ServiceStack, отформатированному как 'yyyyMMdd'.Обнаружение исключения при десериализации в JSConfig Servicestack

Я хотел бы сообщить клиенту, что всякий раз, когда формат неверен. Поскольку функции фреймворка, такие как , ParseExact throw theExceptionException, я хотел бы как-то их поймать;

Вот мой код

 JsConfig<DateTime>.DeSerializeFn = dt => 
     { 
      if (string.IsNullOrWhiteSpace(dt)) 
       return null; 

      return DateTime.ParseExact(dt, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None); 
     }; 

Я думаю, что, вероятно, в случае ошибки FormatException сервис должен просто пойти и дать свободу в Службу выбора Wheter или не заметив отсутствующее значение; но я хотел бы знать, есть ли способ их обнаружить.

С наилучшими пожеланиями, и веселые праздники

+0

Нет такой вещи, как; 'DateTime' с форматом' yyyyMMdd'. Я думаю, ваш клиент отправит вам 'string' с форматом' yyyyMMdd'. Я не знаком с сериализацией ServiceStack и JSON, но в какой строке вы получаете это 'FormatException'? –

+0

Я редактировал код. ParseExact выдает исключение, но это не имеет значения, поскольку оно не зависит от типа Exception. BTW: с фактическим обновлением вы можете видеть, что это способ форматирования и получения формата * yyyyMMdd * – Pizzaboy

ответ

1

Поддержка сокращенного форматом yyyyMMdd даты только что была добавлена ​​так ServiceStack в Json Serializer теперь может обрабатывать данные, как 20001213, например:

var date = "20001213".FromJson<DateTime>(); // new DateTime(2000, 12, 13) 

Там также новый DateTimeSerializer.OnParseErrorFn где вы можете обрабатывать недопустимые форматы даты, например:

DateTimeSerializer.OnParseErrorFn = (str, ex) => 
    DateTime.ParseExact(str, "yyMMdd", CultureInfo.InvariantCulture); 

var date = "001213".FromJson<DateTime>(); // new DateTime(2000, 12, 13) 

Оба эти изменения ar e доступно от v4.0.35 +, что сейчас available on MyGet.

+0

Luv ya, BATMAN! – Pizzaboy

Смежные вопросы