JavaScriptSerializer.Deserialize не принимает дату, сериализованную JavaScriptSerializer.Serialize. - PullRequest
5 голосов
/ 19 декабря 2011

Как найти источник этой проблемы, где значение даты сериализовано JavaScriptSerializer не может быть десериализован JavaScriptSerializer?

В приложении вызова:

var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(model);

// generates this json
{'Guid':'guid','OrderNumber':'1','OrderDate':'\/Date(1299456000000)\/',
   'OrderStatus':'Completed','DiscountRate':0.0000}

В приемной заявке:

string json = @"{'Guid':'guid','OrderNumber':'1','OrderDate':'\/Date(1299456000000)\/',
                 'OrderStatus':'Completed','DiscountRate':0.0000}";
var serializer = new JavaScriptSerializer();
var model = serializer.Deserialize(json);

Выдает String was not recognized as a valid DateTime исключение.

Если дата сериализуется с помощью JavaScriptSerializer, то почему ее нельзя десериализовать с помощью JavaScriptSerializer?

1 Ответ

2 голосов
/ 22 декабря 2011

Если модель имеет тип Model, попробуйте указать тип в вызове Deserialize.

string json = @"{'Guid':'guid','OrderNumber':'1','OrderDate':'\/Date(1299456000000)\/',
             'OrderStatus':'Completed','DiscountRate':0.0000}";
var serializer = new JavaScriptSerializer();
var model = serializer.Deserialize<Model>(json);

Я могу сериализовать и десериализовать даты без ошибок таким образом.

...