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

  

"类型'DataContractJsonSerializer'未定义"。

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

Silverlight 2 Beta 2是否真的支持DataContractJsonSerializer?或者有人会推荐一种不同的方法来保存JavaScript创建的ScriptObject在隔离存储中吗?

有帮助吗?

解决方案

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

我没有意识到你仍然需要在Silverlight中添加dll引用。我认为它自动包含了与ASP.NET相似的方式。

其他提示

有一个Silverson版本的Json.NET将您的对象序列化为JSON。它不需要遍布对象的[DataContract]和[DataMember]属性。

Json.NET

目前,我发现的唯一解决方案是使用ASP.NET AJAX JavaScriptSerializer在JavaScript中执行JSON序列化/反序列化,然后使用Silverlight来存储/检索生成的字符串。

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

我会说你自己的答案是最好的方法。做这样的事情的JavaScript很慢,所以最好把序列化部分留给ASP.NET。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top