2011-06-21 72 views
0

XStream中有一個omitField方法,用於不序列化特定字段。如何在XStream中實現omitType方法?

我想要做的不是序列化具有特定類型的任何字段。

我目前的實現使用自定義轉換器。

在編組方法中,它什麼都不做。沒關係。

但是,在unmarshal方法中,它不能只返回null。否則,解組包含對該對象的引用的對象將引發無效的引用異常。

所以,我返回一個代理對象。這可以通過代理對象提供我想要的另一個功能,但我無法爲某些類型創建這樣的對象。我不是在這篇文章中問這個問題。

我想知道的是如何忽略無效的引用異常以成功反序列化對象?

回答

0

我發現我可以使用omitField和reflection更簡單的方式實現omitType方法。

下面是我目前的實施。

public void omitType(Class<?>... definedIn) { 
    for (Class<?> clazz : definedIn) { 
     Field[] fields = clazz.getDeclaredFields(); 
     for (Field field : fields) { 
      omitField(clazz, field.getName()); 
     } 
    } 
}