2013-04-25 47 views
2

使用Jackson,我們可以選擇將類型信息附加到序列化對象(http://jackson.codehaus.org/1.5.5/javadoc/org/codehaus/jackson/annotate/JsonTypeInfo.html)。使用GSON在序列化JSON中輸入信息

有沒有辦法做到這一點使用GSON,如:

{ 
    propertyName:"test", 
    _className:"foo.bar.TestClass" 
} 

的想法是有它通用的,所以當一個ArrayList<Object>反序列化,合適的對象實例恢復它。

我看到了這個問題:https://stackoverflow.com/a/8683689/1001027這或多或少是我所需要的,但它僅適用於特定類別的對象。實現如何以這種通用的方式進行,每個對象都將與這個屬性進行序列化?

回答

0

您需要實現反序列化器,它將查看類型屬性並將對象轉換爲給定類型。我相信,沒有別的辦法。

檢查出javadoc,實現這個接口可能是你的答案。

+0

我很確定,但問題是實現需要是通用的,並且回退到常規類型(String,int,float,double等)的標準,僅適用於複雜對象應與班級名稱,我還沒有弄清楚如何做到這一點...請查看我發佈的鏈接的最後一句話。 – 2013-04-25 11:37:14

+0

@JavaMentor無論如何,你需要使用例如[DeserializationContext] [1]在代碼中參數化對象。在反序列化方法中,您可以檢查在JSON字符串中輸入的類型是否與您在代碼中傳遞的類型匹配。 [1]:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/JsonDeserializationContext.html – user2256686 2013-04-25 12:38:21

+0

這是肯定的,但問題並不完全相同這;) – 2013-04-25 12:41:18