請嘗試以下
@JsonSerialize(using = JsonSerializer.None.class)
class DerivedItem extends BaseItem {
...
}
這應該告知傑克遜使用自定義序列的基礎項目,但不是DerivedItem。
編輯:證據是在布丁
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}
太謝謝你了! –