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で日付をシリアライズすると、JavaScriptSerializerでデシリアライズできないのはなぜですか?

+0

この関連する質問はありましたか。http://stackoverflow.com/questions/1224793/javascript-serialization-of-datetime-in-asp-net-is-not-giving-a-javascript-date? –

+1

私はそれ以外の多くの質問を読んでいますが、.NETが.NETでシリアル化されたものを逆シリアル化できない理由はまだ分かりません。そして私は私が何をする必要があるかまだ分かりません。クライアントアプリケーションは私のものではないので、シリアル化の方法を変更するよう常に指示することはできません。 –

+0

代わりに 'System.Runtime.Serialization.Json.DataContractJsonSerializer'を使ってみてください。私はそれを試しただけで、日付をシリアライズしてデシリアライズするのに問題はありませんでした。 – 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); 

このようにエラーを発生させずに日付をシリアル化して逆シリアル化することができます。

関連する問題