2013-04-11 3 views
0

У меня возникла проблема с непостоянными данными, возвращающимися из веб-службы. Когда объект не существует, я могу вернуть обратно логический ответ.Jackson marshalling with inconsitant data

Счастливый Путь:

{ 
    "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

Я нашел решение. Это не очень элегантно, но не требует серьезных перезаписи кода. Я смог использовать объект JsonNode у своего установщика свойств foo. Тем не менее, я посмотрю, смогу ли я придумать что-нибудь получше.

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

} 
Смежные вопросы