@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,所以解决办法:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC 是基于 Spring 框架的一种 Java Web 开发框架,用于构建灵活、可扩展和高性能的 Web 应用程序。它采用了基于 MVC(Model-View-Controller)设计模式的架构,将应用程序的逻辑分离为不同的组件,增加了代码的可维护性和可测试性。 详细来说,Spring MVC 的工作流程如下: 1. 客户端发送请求到 DispatcherServlet,它是整个 Spring MVC 的核心控制器。 2. DispatcherServlet 根据配置文件中的映射规则将请求转发给相应的控制器(Controller)。 3. 控制器处理请求,根据业务逻辑进行处理,并返回一个包含模型数据和视图信息的 ModelAndView 对象。 4. DispatcherServlet 根据 ModelAndView 中的视图信息,选择合适的视图解析器(View Resolver)来解析视图并生成最终的视图。 5. 最终的视图由 DispatcherServlet 返回给客户端进行展示。 Spring MVC 提供了以下重要的组件: - 控制器(Controller):负责处理用户请求并返回相应的结果,通常使用注解或配置进行映射。 - 模型(Model):表示应用程序数据和业务逻辑,通常使用 POJO(Plain Old Java Object)实现。 - 视图(View):负责展示模型数据,通常是 JSP、HTML 或 JSON 等形式。 - 视图解析器(View Resolver):根据视图名称解析出真正的视图对象。 - 数据绑定(Data Binding):将请求参数绑定到模型对象中,简化数据处理的过程。 - 校验(Validation):提供了数据校验的功能,可以验证用户输入的数据是否符合规定的格式。 - 异常处理(Exception Handling):统一处理异常并进行适当的响应。 通过 Spring MVC,开发者可以使用各种配置方式(注解或XML)来灵活地配置控制器、视图和其他组件,实现灵活、可维护和可测试的 Web 应用程序。它还提供了丰富的扩展点和插件机制,允许开发者根据实际需求进行自定义扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值