我有一个域javabean,一些bean用密码提供了很多信息 并登录ip,我使用@jsonIgnore过滤该属性,但我没有 希望最终用户知道。
但是有问题,用其他方法 我使用相同的javabean发送回去 到前端,但是现在我需要这个域的一些属性 反正可以通过某些特定方法取消此@jsonIgnore吗?
@JsonIgnore
私有字符串地址;
私有整数绘制;
但是现在我需要地址,我不能这样做..... 我不想使用for循环添加其他对象。
答案 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"}