ScriptObjectsをJSONにシリアル化して、Silverlight分離ストレージに保存するにはどうすればよいですか?
-
02-07-2019 - |
質問
この記事によると、 Silverlight 2 Beta 2 は、 DataContractJsonSerializer
オブジェクトをサポートします。しかし、私がそれを使用しようとすると、VSは言います
"タイプ 'DataContractJsonSerializer'は定義されていません"。
JavaScriptから呼び出され、オブジェクトを渡されるScriptableMemberとしてマークされたメソッドがあります。このメソッド内で、オブジェクトを文字列(できればJSON)にシリアル化し、それを分離ストレージに保存する必要があります。
Silverlight 2 Beta 2はDataContractJsonSerializerを本当にサポートしていますか?または、JavaScriptで作成されたScriptObjectを分離ストレージに保存する別の方法をお勧めしますか?
解決
実際の答えは、DataContractJsonSerializerはSilverlight 2 Beta 2の一部ですが、それを使用するには、SilverlightプロジェクトにSystem.ServiceModel.Webへの参照を追加する必要があります。
Silverlightでdll参照を追加する必要があることに気づきませんでした。 ASP.NETと同じように、すべてが自動的に含まれると思いました。
他のヒント
オブジェクトをJSONにシリアル化するJson.NETのSilverlightバージョンがあります。オブジェクト全体に[DataContract]属性と[DataMember]属性は必要ありません。
今のところ、私が見つけたこれに対する唯一の解決策は、ASP.NET AJAX JavaScriptSerializerを使用してJavaScriptでJSONシリアル化/逆シリアル化を行い、Silverlightを使用して結果の文字列を格納/取得することです。
Sys.Serialization.JavaScriptSerializer.serialize(obj);
Sys.Serialization.JavaScriptSerializer.deserialize(json);
私はあなた自身の答えが最良のアプローチだと思います。 JavaScriptはそのようなことを行うのが非常に遅いため、シリアル化部分はASP.NETに任せるのが最善です。