我可以在不显式定义getter的情况下使用@JsonIgnore和@Getter注解吗?因为我在序列化对象时必须使用这个JsonIgnore,但是在反序列化时,必须忽略JsonIgnore注解,这样我的对象中的字段就不能为空。
@Getter
@Setter
public class User {
private userName;
@JsonIgnore
private password;
}
我知道,只需在密码的getter上定义JsonIgnore,就可以防止我的密码被序列化,但为此,我必须显式定义我不想要的getter内容。任何想法,请,任何帮助将不胜感激。
发布于 2014-12-30 20:25:37
要将@JsonIgnore放到生成的getter方法中,可以使用onMethod = @__( @JsonIgnore )。这将生成带有特定注释的getter。有关更多详细信息,请查看http://projectlombok.org/features/GetterSetter.html
@Getter
@Setter
public class User {
private userName;
@Getter(onMethod = @__( @JsonIgnore ))
@Setter
private password;
}
发布于 2018-09-14 07:19:26
最近,我使用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)
意味着该属性只能在反序列化时写入(使用setter),而不会在序列化时读取(使用getter)
发布于 2017-10-18 13:32:41
这可能是相当明显的,但我之前浪费了很多时间没有考虑这个解决方案:
@Getter
@Setter
public class User {
private userName;
@Setter
private password;
@JsonIgnore
public getPassword() { return password; }
}
正如塞巴斯蒂安所说,@__( @JsonIgnore )
可以解决这个问题,但有时使用javadoc Lombok特性(@__())可能会产生副作用,例如破坏onX生成。
https://stackoverflow.com/questions/24466464
复制相似问题