マッピングの参照を持たない基本クラスを使用してから、実際のクラスにキャストするという、ジャクソン以外のソリューションしか考えられません。
// expect a B on an incoming request
class B {
// ...
}
// after the data is read, cast to A which will have empty references
class A extends B {
public Map<String,List<String>> references;
}
必要ないのに、なぜ参照を送信するのですか?
それとも、着信データが手元になく、jackson が着信参照用に設定するプロパティを見つけられないというマッピング例外を回避したいだけですか? そのために、すべての Json モデル クラスが継承する基本クラスを使用します。
public abstract class JsonObject {
@JsonAnySetter
public void handleUnknown(String key, Object value) {
// for us we log an error if we can't map but you can skip that
Log log = LogFactory.getLog(String.class);
log.error("Error mapping object of type: " + this.getClass().getName());
log.error("Could not map key: \"" + key + "\" and value: \"" + "\"" + value.toString() + "\"");
}
次に、POJO に追加@JsonIgnoreProperties
して、着信プロパティが転送されるようにします。handleUnknown()
@JsonIgnoreProperties
class A extends JsonObject {
// no references if you don't need them
}
編集
この SO スレッドでは、Mixin の使用方法について説明しています。構造をそのまま維持したい場合は、これが解決策かもしれませんが、私は試していません。