2014-11-27 3 views
4

У меня есть этот тестовый пример, который терпит неудачу. Кто-нибудь знает, как это исправить?json.net deserialize datestring в IsoFormat

[TestMethod] 
    public void Should_deserialize_utc_datestring_to_utc_date_with_AlwaysUseUtc_true() 
    { 
     string dateString = "2014-06-02T21:00:00.0000000Z"; 
     DateTime dateRaw = new DateTime(2014, 6, 2, 21, 0, 0, 0, DateTimeKind.Utc); 

     JsonSerializerSettings settings = new JsonSerializerSettings(); 
     settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; 
     settings.DateFormatHandling = DateFormatHandling.IsoDateFormat; 
     DateTime dateSerialized = JsonConvert.DeserializeObject<DateTime>(dateString, settings); 
     dateSerialized.Should().Be(dateRaw); 
    } 

Ошибка я получаю (с помощью ReSharper, как мой TestRunner) является:

Метод испытания When_json_serializing_dates.Should_deserialize_utc_datestring_to_utc_date_with_AlwaysUseUtc_true бросил исключение: Newtonsoft.Json.JsonReaderException: Неожиданный символ встречается при разборе номер: Т. Путь '', строка 1, позиция 10.

ответ

6

Проблема в том, что вам не хватает встроенных кавычек вокруг строки (помните, что она ожидает JSON). Изменение вашего dateString следующим образом разрешит вашу проблему:

string dateString = "\"2014-06-02T21:00:00.0000000Z\""; 
+0

спасибо! это и сделал трюк. – Raymond

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