【问题标题】:How do you Serialize ScriptObjects to JSON to save in Silverlight Isolated Storage?如何将 ScriptObjects 序列化为 JSON 以保存在 Silverlight 隔离存储中?
【发布时间】:2010-09-13 17:09:12
【问题描述】:

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

“未定义类型'DataContractJsonSerializer'”。

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

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

【问题讨论】:

  • 嗯...很抱歉在提出问题后在其他地方找到答案。

标签: javascript silverlight json isolatedstorage


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我说的是所有客户端代码。我所指的 ASP.NET AJAX JavaScriptSerializer 是基于 JavaScript 的,它是 ASP.NET AJAX 客户端脚本的一部分。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      Json.NET

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多