1. ホーム
  2. java

[解決済み] ソースコードの管理下にないプロパティを無視させるにはどうすればよいですか?

2022-06-05 11:08:07

質問

長い話になりますが、私のエンティティのひとつに GeometryCollection を呼び出すと例外がスローされます (この理由は別の本で説明しますが、今はこれが動作する方法だとします)。

その特定のゲッターをインクルードしないように Jackson に指示する方法はありますか? 私がコードを所有/制御している場合、@JacksonIgnore を使用できることは知っています。しかし、そうではなく、jackson は親オブジェクトの連続的なシリアライズによってこのポイントに到達してしまいます。Jacksonのドキュメントにフィルタリングのオプションがあるのを見かけました。それは最も妥当な解決策ですか?

ありがとうございます。

どのように解決するのですか?

あなたは ジャクソン ミキシン . 例えば

class YourClass {
  public int ignoreThis() { return 0; }    
}

このMixinで

abstract class MixIn {
  @JsonIgnore abstract int ignoreThis(); // we don't need it!  
}

これを使って

objectMapper.getSerializationConfig().addMixInAnnotations(YourClass.class, MixIn.class);

編集する

コメントありがとうございます。Jackson 2.5+では、APIが変更されたため、APIを呼び出す際には objectMapper.addMixIn(Class<?> target, Class<?> mixinSource)