2011-11-23 78 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"); 
} 

很簡單!

相關問題