2008-09-27 48 views
0

根据这篇文章Silverlight 2 Beta 2支持DataContractJsonSerializer对象。但是,当我尝试使用它VS说如何将ScriptObject序列化为JSON以保存在Silverlight隔离存储中?

“类型'DataContractJsonSerializer'未定义”。

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

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

+0

嗯......对不起,问这个问题之后别处找出答案。 – 2008-10-01 00:27:58

回答

3

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

我没有意识到你还需要在Silverlight中添加dll引用。我认为它会自动将所有内容都包含在ASP.NET的相似方式中。

1

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

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

我会说你自己的答案是最好的办法。 JavaScript在做类似的事情时速度很慢,所以最好将序列化部分留给ASP.NET。

+0

我正在谈论所有客户端代码。我所指的ASP.NET AJAX JavaScriptSerializer是基于JavaScript的,它是ASP.NET AJAX客户端脚本的一部分。 – 2008-09-28 04:06:26

2

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

Json.NET

相关问题