0

Web サービスから一定でないデータが返されるという問題が発生しています。オブジェクトが存在しない場合、応答でブール値が返されることがあります。

ハッピーパス:

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

不幸な道:

{
    "foo": false
}

ブール値が返されたら、それを null Foo オブジェクトとして保存したいと思いますが、これまでのところ、Jackson でこの問題に対処する良い方法が見つかりませんでした。

これまでに行ったことのほとんどは、 @JsonProperty アノテーションを使用して、オブジェクトをどの json 応答にマップするかだけでした。

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


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

1 に答える 1

1

解決策を見つけました。あまりエレガントではありませんが、大幅なコードの書き直しは必要ありません。foo プロパティ セッターで JsonNode オブジェクトを使用できました。それでも、もっと良いものを思いつくことができるかどうか見ていきます。

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

}
于 2013-04-11T23:45:34.490 に答える