我有一個抽象類車輛:傑克遜篩選和多態性
@JsonFilter('Vehicle_Filter')
public abstract class Vehicle {
private String brand;
private int nbOfWheels;
//Other attributes, constructor & methods
}
我有一個子類汽車延長車輛:
@JsonFilter('Car_Filter')
public class Car extends Vehicle {
private int nbOfDoors;
private boolean isElectric;
//Other attributes, constructor & methods
}
而且我有另一個孩子類自行車延伸車輛:
@JsonFilter('Bike_Filter')
public class Bike extends Vehicle {
private double tirePressure;
private boolean isAllTerrain;
//Other attributes, constructor & methods
}
比方說,我有一個類VehicleCollection代表車輛的名單我想在一個HTML頁面中顯示:
@JsonFilter('VehicleCollection_Filter')
public abstract class VehicleCollection {
private List<Vehicle> vehicles;
//Other attributes, constructor & methods
}
對於這一點,我會用傑克遜(連載從fasterXML)。 假設我只想顯示每輛車的一些屬性。我將使用一個FilterProvider接口。
問題是:當我想過濾車輛的屬性時,我不想區分它是自行車還是汽車。重要的是,它是一輛車。我以爲我可以拿出即過濾時:
FilterProvider filterProvider = new SimpleFilterProvider()
.addFilter("VehicleCollection_Filter", SimpleBeanPropertyFilter.filterOutAllExcept("vehicles"))
.addFilter("Vehicle_Filter", SimpleBeanPropertyFilter.filterOutAllExcept("brand", "nbOfDoors", "isElectric"));
...但是調用作家時,將引發此錯誤:Could not find filter with id: 'Car_Filter'
。似乎傑克遜不想聽到多態性...
有沒有人有同樣的問題?如果是,我可以提示如何克服它嗎?如果不是,是否有一些文件或一些關於爲什麼傑克遜過濾器不能處理繼承問題的隱含解釋?
如果最重要的是,它是一輛車爲什麼你有'@JsonFilter('Car_Filter')'?和'@JsonFilter('Bike_Filter')'? – Oleg
因爲在應用程序的其他部分,我需要單獨顯示汽車和自行車 –