これは基本アイテムのためではなく、DerivedItemのためのカスタム・シリアライザを使用するためにジャクソンに通知する必要があり、次の
@JsonSerialize(using = JsonSerializer.None.class)
class DerivedItem extends BaseItem {
...
}
を試してみてください。
編集:証拠はプディングである
BaseItem.java
@JsonSerialize(using = BaseSerializer.class)
public class BaseItem {
public BaseItem(int x) {
this.x = x;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
int x;
}
DerivedItem.java
@JsonSerialize(using = JsonSerializer.None.class)
public class DerivedItem extends BaseItem {
public DerivedItem(int x, int y) {
super(x);
this.y = y;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
int y;
}
それならば表すブール値に数値を変換する愚かなカスタム・シリアライザ正の数。
public class BaseSerializer extends JsonSerializer<BaseItem> {
@Override
public void serialize(BaseItem value,
JsonGenerator jgen,
SerializerProvider provider) throws IOException {
jgen.writeStartObject();
jgen.writeBooleanField("x", value.getX() > 0);
jgen.writeEndObject();
}
}
出力
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
BaseItem baseItem = new BaseItem(1);
DerivedItem derivedItem = new DerivedItem(1,2);
System.out.println("Base Item: " + mapper.writeValueAsString(baseItem));
System.out.println("Derived Item: " + mapper.writeValueAsString(derivedItem));
}
それを試してみることができます:
Base Item:{"x":true}
Derived Item:{"x":1,"y":2}
ありがとうございました! –