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

时间:2018-09-27 02:17:12

标签: java json spring-mvc

我有一个域javabean,一些bean用密码提供了很多信息 并登录ip,我使用@jsonIgnore过滤该属性,但我没有 希望最终用户知道。

但是有问题,用其他方法 我使用相同的javabean发送回去 到前端,但是现在我需要这个域的一些属性 反正可以通过某些特定方法取消此@jsonIgnore吗?

  

@JsonIgnore

     

私有字符串地址;

     

私有整数绘制;

但是现在我需要地址,我不能这样做..... 我不想使用for循环添加其他对象。

1 个答案:

答案 0 :(得分:0)

我认为您要寻找的是JsonView的概念:在某些情况下,您希望序列化一组属性,而在另一些情况下,您想要(略微)不同的一组属性被序列化。

选中此excellent tutorial,它可以解释evrything,甚至可以与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"}