【问题标题】:Jackson JSON - @JsonProperty overriding @JsonView?杰克逊 JSON - @JsonProperty 覆盖 @JsonView?
【发布时间】:2013-06-15 08:43:19
【问题描述】:

我有以下课程:

 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"),但如果我选择使用普通 writer 而不是 writerWithView,我仍然希望能够序列化所有值。

【问题讨论】:

  • 你确定 y 没有被设置在别处吗?

标签: java serialization jackson fasterxml json-view


【解决方案1】:

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

【讨论】:

  • 有没有办法在 writer 而不是 mapper 上禁用 DEFAULT_VIEW_INCLUSION 功能?
猜你喜欢
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多