プロパティのゲッターとセッターを備えたシンプルなインターフェイスがあります。
public interface HasMoney {
Money getMoney();
void setMoney(Money money);
}
このインターフェイスを実装する別のクラス UserAccount があります。
public class UserAccount implements HasMoney {
private Money money;
@Override
Money getMoney() // fill in the blanks
@Override
void setMoney(Money money) // fill in the blanks
}
私の問題は、お金のプロパティをシリアル化したいが、逆シリアル化中に無視したい、つまり、このプロパティのユーザーからの値を受け入れないことです。セッターで @JsonIgnore を、ゲッターで @JsonIgnore(false) を試しましたが、無視されますが、シリアル化中にも無視されます。
セッターで @JsonIgnore を、ゲッターで @JsonProperty を試して、このプロパティを追跡するつもりであることをジャクソンに明示的に伝えました。マネー プロパティがサーバーに送信され、Jackson がそれをデシリアライズして MalformedJsonException をスローしようとすると、アプリケーションがクラッシュするようです。 Money 型のオブジェクトを作成できません。
最も奇妙なことは、プロパティがプリミティブである場合、ほとんどの場合、セッターに @JsonIgnore を配置し、セッターに @JsonProperty を配置することです。