2010-05-11 49 views
0

我目前使用XStream來序列化一些不執行Serializable的對象。有沒有辦法告訴XStream使用Java的默認序列化,如果對象沒有實現Serializable,並且如果沒有實現則返回XML序列化?或者我需要在它上面實現一個簡單的圖層來檢查?XStream可串行化對象

感謝, 傑夫

回答

1

這不會是一個好主意。 Java序列化是二進制表示,XML是文本表示。

java.lang.String爲例。這實現了Serializable,但顯然你不希望你的字符串在你的XML中被串行化爲二進制blob。類似的數字類型等東西

XStream有一個註冊自定義轉換器的機制,我建議你使用它。如果您選擇將二進制數據序列化到XML文檔中,則需要以某種方式對其進行編碼,例如,使用Base64編碼。

+0

很好的解釋。我並不是真的想把它應用到整個對象圖中。例如,如果我嘗試序列化類X並且它是Serializable,那麼我會將它(及其整個對象圖)序列化爲二進制文件(因爲它被標記爲Serializable,我將假定它的對象圖也是)。如果它沒有標記爲Serializable,我會使用xml作爲該對象(及其整個對象圖)。原因在於我有很多不同的對象,我正在爲持久性而序列化,但有些對象具有很大的XML表示形式,而對於那些我希望以另一種格式存儲的數據類型。 – 2010-05-11 14:45:39