我有以下课程:
class Bean {
private int x;
private int y;
public Bean(int x, int y) {
this.x = x;
this.y = y;
}
@JsonProperty("x")
@JsonView(View1.class)
public void setX(int x) {
this.x = x;
}
public int getX() {
return this.x;
}
@JsonProperty("y")
public void setY(int y) {
this.y = y;
}
public int getY() {
return this.y;
}
}
和观点:
class View1 {
}
我希望_mapper.writerWithView(View1.class).writeValueAsString(bean)
返回{"x":1}
,因为x
是附加了该视图的唯一值,但我得到{"x":1,"y":2}
。
为什么会这样做,怎么能让它不这样做呢?我知道我可以删除@JsonProperty("y")
,但如果我选择使用普通编写器而不是writerWithView,我仍希望能够序列化所有值。
答案 0 :(得分:0)
您必须在_mapper
对象中停用DEFAULT_VIEW_INCLUSION
功能。
参见我的例子:
ObjectMapper _mapper = new ObjectMapper();
_mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
ObjectWriter objectWriter = _mapper.writerWithView(View1.class);
String json = objectWriter.writeValueAsString(bean);
System.out.println(json);