为了账号安全,请及时绑定邮箱和手机立即绑定

如何在特定方法中取消@jsonIgnore

如何在特定方法中取消@jsonIgnore

不负相思意 2021-10-13 16:07:17
我有一个域 javabean,一些 bean hvae 有很多带有密码和登录 Ip 的信息,我使用 @jsonIgnore 来过滤我不希望最终用户知道的那个属性。但是有一个问题,在其他方法中,我使用相同的 javabean 发送回前端,但是现在我需要来自该域的一些属性,无论如何可以在某些特定方法中取消此 @jsonIgnore?@JsonIgnore私有字符串地址;私人整数提取;但现在我需要 address ,我不能这样做..... 我不想使用 for 循环添加其他对象。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

我认为您正在寻找的是以下概念JsonView:在某些情况下,您希望序列化一组属性,而在其他一些情况下,您希望序列化一组(稍微)不同的属性。


检查这个优秀的教程,它解释了一切,甚至是 Spring MVC 的使用。


创建类来注释字段:


public class Views {

    public static class Public {

    }


    public static class Internal extends Public {

    }

}

注释字段:


public class Item {


    @JsonView(Views.Public.class)

    public int id;


    @JsonView(Views.Public.class)

    public int drawnum;


    @JsonView(Views.Internal.class)

    public String address;

}

在控制器中,如果您只想序列化“公共”属性;


@JsonView(Views.Public.class)

@RequestMapping("/items/{id}")

public Item publicItem(@PathVariable int id) {

结果 : {"id":2,"drawnum":5}


在另一个控制器中,如果您希望所有属性都被序列化;


@JsonView(Views.Internal.class)

@RequestMapping("/items/{id}")

public Item internalItem(@PathVariable int id) {

结果 : {"id":2,"drawnum":5,"address":"My address"}


查看完整回答
反对 回复 2021-10-13
  • 1 回答
  • 0 关注
  • 253 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信