Конвертировать JSON Дата / Время в C # DateTime - PullRequest
0 голосов
/ 11 февраля 2011

У меня есть DateTime, который возвращается из веб-службы WCF.этот DateTime является частью объекта CLR, который имеет атрибут DataContract.DateTime - это свойство, к которому добавлен атрибут DataMember.Все правильно возвращается к моему клиенту (приложение Silverlight).

Мой вопрос: как взять сериализованную версию DateTime и преобразовать ее в объект DateTime в C #?

Спасибо!

1 Ответ

3 голосов
/ 22 февраля 2012

DateTime, который возвращается из веб-службы, будет в странном формате, например

\/Date(1297367252340-0500)\/

Причина, по которой дата находится в этом странном формате, заключается в том, что DateTime является примитивом в WCF.К сожалению, универсального стандартизированного формата для сериализации даты и времени в JSON не существует - различные платформы используют различные строковые форматы.

Дилемма заключается в том, что WCF необходимо изначально понимать, что конкретная строка в сети действительно является DateTime, а не просто еще одна простая ванильная строка JSON.Отсюда и странный формат.Как только DataContractJsonSerializer обнаруживает дату, начинающуюся с / Date, он пытается проанализировать ее как дату.

У клиента WCF или клиента Silverlight 2+ с этим НЕ должно быть проблем - им следует использовать System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject или System.Web.Script.Serialization.JavaScriptSerializer.Deserialize.

Если вы используете веб-клиент, вы можете включить файл .js, который поставляется с ASP.NET AJAX (я думаю, что он называется MicrosoftAspNetAjax.js или MicrosoftAjax.cs, хотя название могло измениться).Его функция десериализации также автоматически разбирает эти даты.

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

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