У меня есть граф объектов, который содержит объекты, которые (для целей данного примера) являются подклассами типа Foo. Класс Foo имеет атрибут bar, который я не хочу сериализовать с моим графом объектов. Поэтому я хочу сказать, что всякий раз, когда вы сериализуете объект типа Foo, выводите все, кроме bar.
class Foo { // this is an external dependency
public long getBar() { return null; }
}
class Fuzz extends Foo {
public long getBiz() { return null; }
}
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
// I want to set a configuration on the mapper to
// exclude bar from all things that are type Foo
Fuzz fuzz = new Fuzz();
System.out.println(mapper.writeValueAsString(fuzz));
// writes {"bar": null, "biz": null} what I want is {"biz": null}
}
Спасибо,
Выкуп
Редактировать: Использовал предложение StaxMan, включая код, который я бы в итоге использовал (и сделал, например, bar геттером)
interface Mixin {
@JsonIgnore long getBar();
}
class Example {
public static void main() {
ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().addMixInAnnotations(Foo.class, Mixin.class);
Fuzz fuzz = new Fuzz();
System.out.println(mapper.writeValueAsString(fuzz));
// writes {"biz": null} whoo!
}
}