请尝试以下
@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}
太谢谢你了! –