首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >@JsonIgnore with @Getter Annotation

@JsonIgnore with @Getter Annotation
EN

Stack Overflow用户
提问于 2014-06-28 19:45:55
回答 5查看 23.8K关注 0票数 29

我可以在不显式定义getter的情况下使用@JsonIgnore和@Getter注解吗?因为我在序列化对象时必须使用这个JsonIgnore,但是在反序列化时,必须忽略JsonIgnore注解,这样我的对象中的字段就不能为空。

代码语言:javascript
复制
@Getter
@Setter
public class User {

    private userName;

    @JsonIgnore
    private password;
}

我知道,只需在密码的getter上定义JsonIgnore,就可以防止我的密码被序列化,但为此,我必须显式定义我不想要的getter内容。任何想法,请,任何帮助将不胜感激。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-12-30 20:25:37

要将@JsonIgnore放到生成的getter方法中,可以使用onMethod = @__( @JsonIgnore )。这将生成带有特定注释的getter。有关更多详细信息,请查看http://projectlombok.org/features/GetterSetter.html

代码语言:javascript
复制
@Getter
@Setter
public class User {

    private userName;

    @Getter(onMethod = @__( @JsonIgnore ))
    @Setter
    private password;
}
票数 51
EN

Stack Overflow用户

发布于 2018-09-14 07:19:26

最近,我使用jackson-annotation 2.9.0和lombok 1.18.2遇到了同样的问题

这是对我有效的方法:

代码语言:javascript
复制
@Getter
@Setter
public class User {

    @JsonIgnore
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;

因此,基本上添加注释@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)意味着该属性只能在反序列化时写入(使用setter),而不会在序列化时读取(使用getter)

票数 12
EN

Stack Overflow用户

发布于 2017-10-18 13:32:41

这可能是相当明显的,但我之前浪费了很多时间没有考虑这个解决方案:

代码语言:javascript
复制
@Getter
@Setter
public class User {

    private userName;

    @Setter
    private password;

    @JsonIgnore
    public getPassword() { return password; }
}

正如塞巴斯蒂安所说,@__( @JsonIgnore )可以解决这个问题,但有时使用javadoc Lombok特性(@__())可能会产生副作用,例如破坏onX生成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24466464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档