エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

org.codehaus.jackson.map.ObjectMapperで json -> bean の変換をする際に、beanに存在しないフィールドを無視する方法

検索してもそれっぽいのがあるようで見つからなかったのでメモ。

 

http://stackoverflow.com/questions/5455014/ignoring-new-fields-on-json-objects-using-jackson

の、

Add the following to the top of your class: import org.codehaus.jackson.annotate.JsonIgnoreProperties; @JsonIgnoreProperties(ignoreUnknown = true)

というのを見て、これだ! と思ったのですが、そもそもBeanのクラスをxjcを使ってxsdから自動生成しているため、アノテーションを入れることなど不可能なのでした。

それでうーんうーんと調べていたところ、ObjectMapper側に設定を入れられることをいまさらながら発見。

これでできた。

ObjectMapper mapper = makeObjecteRapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.readValue(json, clazz);