Как я могу реализовать метод omitType в XStream? - PullRequest
0 голосов
/ 21 июня 2011

В XStream есть метод omitField, который не сериализует определенное поле.

То, что я хочу сделать, - это не сериализовать поля определенного типа.

Моя текущая реализация использует пользовательский конвертер.

В методе маршала это ничего не делает. Это нормально.

Однако в немаршальном методе он не может просто возвращать ноль. В противном случае при демонтаже объекта, содержащего ссылку на этот объект, возникнет недопустимое исключение ссылки.

Итак, я возвращаю прокси-объект. Это может обеспечить другую функцию, которую я хочу через прокси-объект, но я не могу создать такой объект для некоторых типов. Я не задаю эту проблему в этом посте.

Что я хочу знать, так это как игнорировать недопустимое исключение ссылки для успешной десериализации объекта?

1 Ответ

0 голосов
/ 22 июня 2011

Я обнаружил, что могу реализовать метод omitType более простым способом, используя omitField и отражение.

Ниже приведена моя текущая реализация.

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