zoukankan      html  css  js  c++  java
  • @JsonView注解指定返回的model类中显示的字段

    1、User类

    package com.imooc.model;
    
    import com.fasterxml.jackson.annotation.JsonView;
    
    /**
     * @author oy
     * @date 2019年6月22日 下午10:42:03
     * @version 1.0.0
     */
    public class User {
        public interface UserSimpleView {};
        public interface UserDetailView extends UserSimpleView {};
        
        private String username;
        private String password;
    
        @JsonView(UserSimpleView.class)
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        @JsonView(UserDetailView.class)
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }

    2、IndexController

    package com.imooc.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.fasterxml.jackson.annotation.JsonView;
    import com.imooc.model.User;
    import com.imooc.model.User.UserSimpleView;
    import com.imooc.service.UserService;
    
    /**
     * @author oy
     * @date 2019年6月22日 下午10:17:37
     * @version 1.0.0
     */
    @RestController
    public class IndexController {
        @Autowired
        private UserService userService;
        
        @JsonView(UserSimpleView.class)
        @GetMapping("/user")
        public List<User> getUsers() {
            return userService.getUsers();
        }
    }

    3、测试用例

    package com.imooc.controller;
    
    import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
    import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
    
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.http.MediaType;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    import org.springframework.web.context.WebApplicationContext;
    
    /**
     * @author oy
     * @date 2019年6月22日 下午11:14:56
     * @version 1.0.0
     */
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class IndexControllerTest {
    
        @Autowired
        private WebApplicationContext wac;
        
        private MockMvc mocMvc;
        
        @Before
        public void setUp() throws Exception {
            mocMvc = MockMvcBuilders.webAppContextSetup(wac).build();
        }
    
        @Test
        public void testGetUsers() throws Exception {
            String mvcResult = mocMvc.perform(get("/user")
                    .contentType(MediaType.APPLICATION_FORM_URLENCODED))
                    .andDo(print()) // 打印信息
                    .andExpect(status().isOk()) // 期望返回的状态码为200
                    .andReturn().getResponse().getContentAsString();
        
            System.out.println("mvcResult: " + mvcResult);
            //mvcResult: [{"username":"张三","password":"123"},{"username":"李四","password":"123"}]
            //@JsonView(UserSimpleView.class) ==> mvcResult: [{"username":"张三"},{"username":"李四"}]
        }
    }

      

      当IndexController#getUsers()方法加上注解@JsonView(UserSimpleView.class)后,测试打印结果:mvcResult: [{"username":"张三"},{"username":"李四"}],

      当IndexController#getUsers()方法加上注解@JsonView(UserDetailView.class)后,测试打印结果:mvcResult: [{"username":"张三","password":"123"},{"username":"李四","password":"123"}]

  • 相关阅读:
    进程 线程 协程
    TCP的滑动窗口和网络拥塞控制
    Golang中函数结构体,将函数转换为接口
    go的调度 与 go 的GC
    未来程序员这个工种会如何进化与“35岁之殇”的思考
    golang 实现 LRU
    golang 单例模式实现
    内存泄露及内存溢出,解决方案
    Jvm调优参数
    HttpUtil
  • 原文地址:https://www.cnblogs.com/xy-ouyang/p/11073473.html
Copyright © 2011-2022 走看看