如何将ScriptObjects序列化为JSON以保存在Silverlight隔离存储中?

时间:2020-03-06 14:49:32  来源:igfitidea点击:

根据本文,Silverlight 2 Beta 2支持DataContractJsonSerializer对象。但是,当我尝试使用它时,VS说

"Type 'DataContractJsonSerializer' is not defined".

我有一个标记为ScriptableMember的方法,该方法从JavaScript调用并传递给对象。在此方法内部,我需要将对象序列化为字符串(最好是JSON),然后将其保存在隔离的存储中。

Silverlight 2 Beta 2是否真的支持DataContractJsonSerializer?还是有人建议使用其他方法将JavaScript创建的ScriptObject保存在隔离存储中?

解决方案

就目前而言,我发现的唯一解决方案是使用ASP.NET AJAX JavaScriptSerializer在JavaScript中进行JSON序列化/反序列化,然后仅使用Silverlight来存储/获取结果字符串。

Sys.Serialization.JavaScriptSerializer.serialize(obj);
Sys.Serialization.JavaScriptSerializer.deserialize(json);

我想说我们自己的答案将是最好的方法。 JavaScript在执行此类操作时非常缓慢,因此最好将序列化部分留给ASP.NET。

实际的答案是,DataContractJsonSerializer是Silverlight 2 Beta 2的一部分,但是我们需要在Silverlight项目中添加对System.ServiceModel.Web的引用才能使用它。

我没有意识到我们仍然需要在Silverlight中添加dll引用。我认为它会自动以类似于ASP.NET的方式包含所有内容。

Json.NET有Silverlight版本,可将对象序列化为JSON。它不需要整个对象都具有[DataContract]和[DataMember]属性。

Json.NET