目前,我们的应用程序使用GWT-RPC进行大多数客户端 - 服务器通信。这种情况发生在我们需要自动生成图像的时候。我们基于许多参数生成图像,因此我们所做的是构建大型复杂网址,并通过get请求检索动态构建的图像。
如果我们能找到一种方法来在gwt客户端代码中序列化Java对象并在服务器端反序列化它们,我们可以使我们的URL更容易使用。而不是
http://host/page?param1=a¶m2=b¶m3=c....
我们可以
http://host/page?object=?JSON/XML/Something Magicical
并且在服务器上只有
new MagicDeserializer.(request.getParameter("object"),AwesomeClass.class);
我不关心json / xml中间格式是什么/我真的希望能够在我的gwt客户端代码和servlet中停止跟踪手动编组/解组参数。
答案 0 :(得分:3)
使用AutoBean Framework。您需要的是简单的,并且都在http://code.google.com/p/google-web-toolkit/wiki/AutoBean
答案 1 :(得分:0)
我已经看到使用此库的最成功和最少量的代码:
https://code.google.com/p/gwtprojsonserializer/
除了标准的toString()之外,对于所有的Object类,我还要在每个我想要的类中使用所谓的toJsonString()" JSONable"。注意,每个类必须扩展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");
}
很简单!