2013-04-11 39 views
0

我遇到了從Web服務返回的不穩定數據的問題。當一個對象不存在時,我可能會在迴應中返回一個布爾值。傑克遜編組數據不一致

快樂路徑:

{ 
    "foo": {"msg": bar} 
} 

不幸的路徑:

{ 
    "foo": false 
} 

當返回一個布爾值,我想它存儲爲一個空Foo對象,但到目前爲止,我還沒有找到傑克遜解決這個問題的好方法。

大部分我迄今爲止所做的只是使用@JsonProperty註釋將我的對象映射到json響應。

//... Omitted code 
@JsonProperty("foo") 
public void setBar(Bar bar) { 
    this.bar = bar 
} 


class Bar { 
    String msg; 
    // ... Getter and setter below ... 
} 

回答

1

我找到了解決方案。這不是很優雅,但它不需要重寫任何主要的代碼。我能夠在我的foo屬性設置器中使用JsonNode對象。不過,我會看看我能不能做出更好的東西。

@JsonProperty("foo") 
public void setBar(JsonNode barJsonNode) { 
    if(barJsonNode.isBoolean()){ 
     bar = null; 
    } else { 
     // Magic goes here 
    } 

}