2011-11-23 62 views
2

目前我们的应用程序使用GWT-RPC进行大多数客户端 - 服务器通信。这种情况下,我们需要自动生成图像。我们基于几十个参数生成图像,因此我们所做的就是构建大型复杂网址,并通过get请求获取动态构建的图像。将GWT客户端对象序列化为字符串并在服务器上反序列化的方法?

如果我们能找到一种在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。

+1

目前还不清楚您想要哪个Java对象进行反向/序列化,或者原始URL如何生成。了解这两个将有所帮助。 –

回答

0

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

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

随着标准的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"); 
} 

很简单!

相关问题