【问题标题】:Way to serialize a GWT client side object into a String and deserialize on the server?将 GWT 客户端对象序列化为字符串并在服务器上反序列化的方法?
【发布时间】:2012-01-05 04:33:46
【问题描述】:

目前我们的应用程序使用 GWT-RPC 进行大多数客户端-服务器通信。当我们需要自动生成图像时,就会出现这种情况。我们根据几十个参数生成图像,所以我们要做的是构建大型复杂的 url,并通过 get 请求检索动态构建的图像。

如果我们能找到一种方法来序列化 gwt 客户端代码中的 Java 对象并在服务器端反序列化它,我们可以使我们的 url 更容易使用。而不是

http://host/page?param1=a&param2=b&param3=c....

我们可以有

http://host/page?object=?JSON/XML/Something Magicical

而在服务器上只有

new MagicDeserializer.(request.getParameter("object"),AwesomeClass.class);

我不在乎什么是 json/xml/什么中间格式,我只是希望能够停止跟踪我的 gwt 客户端代码和 servlet 中的手动编组/解组参数。

【问题讨论】:

  • 不太清楚您要反序列化哪些 Java 对象,或者原始 URL 是如何生成的。了解这两个会很有帮助。

标签: java json gwt serialization servlets


【解决方案1】:

使用 AutoBean 框架。你需要的很简单,都在这里http://code.google.com/p/google-web-toolkit/wiki/AutoBean

【讨论】:

    【解决方案2】:

    我见过使用这个库最成功和最少的代码:

    https://code.google.com/p/gwtprojsonserializer/

    除了所有 Object 类都应该有的标准 toString() 之外,我在每个我想要“JSONable”的类中也有一个叫做 toJsonString() 的东西。注意,每个类都必须继承库自带的JsonSerializable:

    public String toJsonString()
    {
        Serializer serializer = (Serializer) GWT.create(Serializer.class);
    
        return serializer.serializeToJson(this).toString();
    }
    

    为了将 JSON 字符串转回对象,我在同一个类中放置了一个静态方法,该方法会重新创建该类本身:

    public static ClassName recreateClassViaJson(String json)
    {
        Serializer serializer = (Serializer) GWT.create(Serializer.class);
    
        return (ClassName) serializer.deSerialize(json, "full.package.name.ClassName");
    }
    

    非常简单!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 2017-07-01
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多