2012-07-02 85 views
1

我使用Axis調用基於SOAP的Web服務。然後,我嘗試使用Google Gson庫將返回的遠程對象序列化爲JSON。額外/欺騙會員防止系列化(軸,爪哇,GSON)

的序列化JSON失敗,與GSON抱怨說:「有一個名爲多個元素__equalsCalc())。

當我檢查返回的對象在我的IDE(Eclipse的),我可以看到,這是真 - 返回的對象有三個成員稱爲__equalsCalc()和另外三個叫__hashCode

我環視,這些都是由WSDL2Java的添加知道(我認爲),以避免遞歸我的問題是,爲什麼。每個有三個?我怎樣才能得到串行忽略這些?他們不是該對象的定義實際上部分(它被稱爲RemoteProject,僅供參考)。我能做些什麼的hackish像蒙上了RemoteProject到RemoteProject讓它放棄這些成員?

回答

0

我不知道GSON。
隨着Jackson,您可以標註屬性(即 - 領域有根據的Java bean約定getter/setter方法)與@JsonIgnore。
這樣就可以防止像遞歸/沒有匹配的setter或getter等等...
嘗試的問題找出來,如果你有相同的GSON或使用傑克遜。

+0

GSON會忽略標記的字段問題在於,類定義本身是由Axis自動生成的,所以如果開始編輯這些來標記字段瞬變,它會變得很難看。我可能需要爲Gson編寫一些自定義的反序列化程序.... –

+0

@SteveLane - 我想你會這樣做,這對傑克遜來說也是一個有效的解決方案。但是,當我和Axis一起工作時(類似5年前),我不記得我有這些自動生成的方法。也許事情已經改變,因爲... –