環境情報
-
java
- 1.8
java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
- 1.8
-
jackson
- 2.7.4
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.7.4</version> </dependency>
- 2.7.4
内容
Liblary
のバグでとあるデータクラスのとある getter
がcall
されると、
必ず、 Cast Error
となるという状況になってしまい、
エラーとなるフィールドの情報自体は不要なので、アノテーション使わずに、
除外フィールドを指定することができないか調べてみたところ、
以下のようなサイトが見つかりました。
2.7.4で試してみたところ、
ObjectMapper om = new ObjectMapper();
om.getSerializationConfig().addMixInAnnotations(Person.class, PersonMixin.class);
ObjectMapper mapper2 = new ObjectMapper();
mapper2.addMixInAnnotations(User.class, UserMixin.class);
という記述は、非推奨になっており、以下のように記述しました。
static interface SongIgnore {
@JsonIgnore
String getAnalysis();
}
/**
* toMap4EchonestSong
*
* @param song
* @return
*/
public static Map<String, Object> toMap4EchonestSong(Song song) {
ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(Song.class, SongIgnore.class);
Map<String, Object> map = mapper.convertValue(song, Map.class);
return map;
}
Version Up
が早くて、ちょいちょい公開API 変わってきますね..
名前長いですが使う側は混乱を考えると、addMixInAnnotations
でも良いだろと個人的には、思ったりします.
以上です。
コメント