Не удается разобрать данные с помощью JavaScriptDateTimeConverter - PullRequest
6 голосов
/ 02 ноября 2010

Я пытаюсь разобрать простой JSON, используя Json.net

 string inputJson = @"
                {
                 ""modificationTime"" : ""\/Date(1224043200000)\/""
                 }";

И свойство определяется

[JsonProperty("modificationTime")]
[JsonConverter(typeof(JavaScriptDateTimeConverter))]
public DateTime ModificationTime { get; set; }

Но DeserializeObject выдает исключение со следующим сообщением: «Неожиданный токен или значение при разборе даты. Токен: Дата, значение: 15.10.2008 04:00:00»

Ну, насколько я понимаю, он фактически проанализировал дату, не так ли? Это исключение выдается из строки 68 в JavaScriptDateTimeConverter.cs:

68 if (reader.TokenType != JsonToken.StartConstructor ||  string.Compare(reader.Value.ToString(), "Date", StringComparison.Ordinal) != 0)
69            throw new Exception("Unexpected token or value when parsing date. Token: {0}, Value: {1}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType, reader.Value));
70    
71          reader.Read();

В этом месте reader.TokenType - это Date, а reader.Value.ToString () - 15.10.2008 04:00:00 Есть идеи?

Ответы [ 2 ]

6 голосов
/ 02 ноября 2010

Json.NET десериализует даты в формате:

"\/Date(1224043200000)\/"

по умолчанию. JavaScriptDateTimeConverter предназначен для дат в формате:

new Date(1234567890)
0 голосов
/ 02 ноября 2010

У меня была похожая проблема некоторое время назад.Я нашел обходной путь и написал об этом в блоге:

http://shico.blogspot.com/2010/07/ajaxpro-deserialize-json-datetime.html

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...