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

时间:2008-09-27 15:18:59

标签: javascript silverlight json isolatedstorage

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

  

“类型'DataContractJsonSerializer'未定义”。

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

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

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

Json.NET

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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