2013-06-18 58 views
0

我有以下類:Jackson 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; 
    } 
} 

和視圖:

class View1 { 

} 

我希望_mapper.writerWithView(View1.class).writeValueAsString(bean)返回{"x":1},因爲x是具有連接到它的視圖的唯一價值,但我獲得{"x":1,"y":2}

爲什麼要這樣做,我該如何讓它不這樣做?我知道我可以刪除@JsonProperty("y"),但是如果我選擇使用普通writer而不是writerWithView,我仍然可以序列化所有值。

+0

是U確保Y不被設置在其他地方? – sidgate

回答

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); 
+1

是否有一種方法可以禁用編寫器上的'DEFAULT_VIEW_INCLUSION'功能而不是映射器? –