Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将GWT客户端对象序列化为字符串并在服务器上反序列化的方法?_Java_Json_Gwt_Serialization_Servlets - Fatal编程技术网

Java 将GWT客户端对象序列化为字符串并在服务器上反序列化的方法?

Java 将GWT客户端对象序列化为字符串并在服务器上反序列化的方法?,java,json,gwt,serialization,servlets,Java,Json,Gwt,Serialization,Servlets,目前,我们的应用程序使用GWT-RPC进行大多数客户机-服务器通信。当我们需要自动生成图像时,就会出现这种情况。我们根据几十个参数生成图像,所以我们要做的是构建大型复杂URL,并通过get请求检索动态构建的图像 如果我们能找到一种在gwt客户机代码中序列化Java对象并在服务器端反序列化它的方法,我们就可以使URL更容易使用。而不是 http://host/page?param1=a&param2=b&param3=c.... 我们本来可以 http://host/page?o

目前,我们的应用程序使用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中的手动编组/解编组参数。

使用AutoBean框架。您需要的很简单,就在这里

我已经看到使用此库最成功、代码量最少的代码:

除了所有对象类都应该使用的标准toString()之外,我还希望在每个类中使用一个名为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");
}

非常简单

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