@JsonView的使用详解

@JsonView的使用详解

一 问题描述

写项目的时候一个类中的属性有的需要返回,有的不需要返回。例如在A功能中只需要看到用户名和总在线时长就行,但是在B功能中关于用户的所有的属性都需要看到。这就需要有选择的

二 解决办法

因为是通过Json返回给前端的,所以相当于我现在要有选择的序列化对象。JsonView可以过滤序列化对象的字段属性,可以使你有选择的序列化对象

三 基本用法

3.1 定义一个接口

相当于一个标记,之后只要字段上标记了这个接口就说明这几个字段属于同时只返回的

public interface View {
    
}
3.2 Pojo类
@Data
public class User{
    String id;
    @JsonView(View.class)
    String name;
    @JsonView(View.class)
    int department;
    String allTimeString;
    @JsonView(View.class)
    int allTimeInt;
    @JsonView(View.class)
    boolean isOnline;
    @JsonIgnore
    String mac;
    List<OnOffLine> onOffLine;
}
3.3 Controller上标记

只有在url请求/onOffShow的时候才会选择性的返回上个pojo标记的字段

@CrossOrigin
@RestController
public class OnOffLineShow {

    @Autowired
    AllUserList allUserList;

    @GetMapping(value = "/onOffShow")
    @JsonView(View.class)
    public ServiceResult findSomeday() {
        return ServiceResult.success(allUserList.allUserList);
    }
}

四 问题

看网上这样实现之后都可以成功,但是我的就返回一个这个{}【空】,那为什么?最后发现因为相当于嵌套类。ServiceResult中的一个字段是刚才标记的这个pojo,所以解决办法:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值