4

JavaScriptSerializer에서 JavaScriptSerializer에 의해 일련 화 된 날짜 값을 역 직렬화 할 수없는이 문제의 원인을 어떻게 찾을 수 있습니까? 호출 애플리케이션에JavaScriptSerializer.Deserialize가 JavaScriptSerializer.Serialize에 의해 직렬화 된 날짜를 허용하지 않습니다.

: 수신 애플리케이션에서

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에서 날짜를 serialize하는 경우 JavaScriptSerializer에서 직렬화를 해제 할 수없는 이유는 무엇입니까?

+0

관련 질문이 있습니까 : http://stackoverflow.com/questions/1224793/javascript-serialization-of-datetime-in-asp-net-is-not-giving-a-javascript-date? –

+1

그 밖의 많은 질문을 읽었지만 .NET이 .NET에서 직렬화 된 것을 deserialize 할 수없는 이유를 아직도 이해하지 못합니까? 그리고 나는 아직도 내가해야 할 일을 확신 할 수 없다. 클라이언트 응용 프로그램은 내 것이 아니므로 항상 직렬화 방식을 변경하도록 지시 할 수는 없습니다. –

+0

대신'System.Runtime.Serialization.Json.DataContractJsonSerializer'를 사용해보십시오. 방금 시도하고 날짜를 serialize 및 deserializing 어떤 문제가 없었어요. – hawkke

답변

2

모델이 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); 

이 방식으로 오류없이 날짜를 직렬화 및 비 직렬화 할 수 있습니다.