如何在XStream中实现omitType方法?

时间:2011-06-21 10:49:55

标签: converter xstream

XStream中有一个omitField方法,不能序列化特定字段。

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

我当前的实现使用自定义转换器。

在元帅方法中,它什么都不做。没关系。

但是,在unmarshal方法中,它不能只返回null。否则,当解组包含对该对象的引用的对象时,将抛出无效的引用异常。

所以,我返回一个代理对象。这可以通过代理对象提供我想要的另一个功能,但我不能为某些类型创建这样的对象。我不是在这篇文章中问这个问题。

我想知道的是如何忽略无效的引用异常以成功反序列化对象?

1 个答案:

答案 0 :(得分: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());
        }
    }
}