オブジェクトをシリアル化するときにこのJsonIgnoreを使用する必要がありますが、逆シリアル化中はJsonIgnoreアノテーションを無視する必要があるため、オブジェクトのフィールドをnullにしないでください。
@Getter
@Setter
public class User {
private userName;
@JsonIgnore
private password;
}
passwordのゲッターでJsonIgnoreを定義するだけで、パスワードがシリアル化されないようにすることができますが、そのためには、不要なゲッターのものを明示的に定義する必要があります。どんなアイデアでもお願いします、どんな助けでもありがたいです。
生成されたgetterメソッドに@JsonIgnoreを配置するには、onMethod = @__(@JsonIgnore)を使用できます。これにより、特定のアノテーションが付いたゲッターが生成されます。詳細については http://projectlombok.org/features/GetterSetter.html を確認してください
@Getter
@Setter
public class User {
private userName;
@Getter(onMethod = @__( @JsonIgnore ))
@Setter
private password;
}
最近、Jackson-Annotation 2.9.0とLombok 1.18.2を使用して同じ問題が発生しました
これは私のために働いたものです:
_@Getter
@Setter
public class User {
@JsonIgnore
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
_
したがって、基本的にアノテーション@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
を追加すると、プロパティは(セッターを使用して)逆シリアル化のためにのみ書き込まれ、シリアライズ時に(ゲッターを使用して)読み取られません。
これはかなり明白かもしれませんが、私は以前にこの解決策を考えていなかった多くの時間を失いました:
_@Getter
@Setter
public class User {
private userName;
@Setter
private password;
@JsonIgnore
public getPassword() { return password; }
}
_
セバスチャンが言ったように、@__( @JsonIgnore )
はこの問題を解決できますが、onX Lombok機能(@__())を使用すると、たとえばjavadoc生成が壊れるなどの副作用が生じることがあります。
JDKバージョン8では、以下を使用します。
// @Getter(onMethod=@__({@Id, @Column(name="unique-id")})) //JDK7
// @Setter(onParam=@__(@Max(10000))) //JDK7
@Getter(onMethod_={@Id, @Column(name="unique-id")}) //JDK8
@Setter(onParam_=@Max(10000)) //JDK8