使用 GWT 内置的 RPC 序列化/反序列化机制
Posted
技术标签:
【中文标题】使用 GWT 内置的 RPC 序列化/反序列化机制【英文标题】:Using RPC serialization/deserialization mechanism built in GWT 【发布时间】:2011-07-29 12:40:19 【问题描述】:我正在使用 html5 本地存储开发 GWT 离线应用程序。我想使用 com.google.gwt.storage.client.Storage(在 2.3 版中引入)缓存/存储传输对象。但问题是,就目前(2.3 版)而言,Storage 只能保存字符串值。
是否有可能从客户端代码中使用 GWT 内置的 rpc 序列化/反序列化机制?这样我就可以序列化传输对象并将它们存储在本地存储中,并在需要时检索它们并反序列化内容。
【问题讨论】:
【参考方案1】:GWT Docs有话要说:
本地存储是字符串存储
HTML5 本地存储将数据保存在 字符串形式作为键值对。如果您要保存的数据不是 字符串数据,您负责与字符串之间的转换 使用本地存储时。对于与 GWT 一起使用的代理类 RequestFactory,可以使用RequestFactory#getSerializer()来做 字符串序列化。对于非代理对象,您可以使用 JSON 字符串化和解析。
编辑:
RequestFactory#getSerializer()
返回ProxySerializer
的实现。但是
ProxySerializer 序列化 EntityProxy 对象的图形。一种 ProxySerializer 与 ProxyStore 的实例相关联时,它 是通过 RequestFactory.getSerializer(ProxyStore) 创建的。
所以你不能用它来序列化任意对象。只有EntityProxy
对象可以这样序列化。 GWT 文档没有提到对非EntityProxy
对象进行此类序列化的任何方法,因此我认为可以安全地假设到目前为止还没有现成的解决方案。对于非EntityProxy
对象,GWT 文档(上面引用)建议使用 JSON 序列化。
【讨论】:
我想使用 GWT 的库方法来序列化/反序列化对象,而不是 JSON。你能举例说明如何使用 RequestFactory#getSerializer() 来做到这一点吗?以上是关于使用 GWT 内置的 RPC 序列化/反序列化机制的主要内容,如果未能解决你的问题,请参考以下文章