杰克逊JSON - @JsonProperty重写@JsonView



我有以下类:

 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;
    }
}

和view:

class View1 {
}

我希望_mapper.writerWithView(View1.class).writeValueAsString(bean)返回{"x":1},因为x是唯一具有附加视图的值,但我得到{"x":1,"y":2}

为什么它会这样做,我怎样才能使它不这样做?我知道我可以删除@JsonProperty("y"),但我希望仍然能够序列化所有值,如果我选择使用一个正常的作家,而不是writerWithView。

你必须在_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);

相关内容

  • 没有找到相关文章

最新更新