天天看點

@JsonView的使用

@JsonView的使用

前言

版本說明

platform-bom=Cairo-SR7      

相關連結:

實戰演練

@JsonView 使用步驟

  1. 使用接口來聲明多個視圖
  2. 在值對象的get方法山指定視圖
  3. 在 Controller 方法上指定視圖

User 類

package top.simba1949.common;
import com.fasterxml.jackson.annotation.JsonView;
import lombok.Setter;
import lombok.ToString;
/**
 * @Author Theodore
 * @Date 2019/12/2 15:32
 */
@Setter
@ToString
public class User {
    /**
     * 1. 使用接口來聲明多個視圖
     */
    public interface UserSimpleView{}
    public interface UserDetailView extends UserSimpleView{}
    private String username;
    private String password;
    /**
     * 2. 在值對象的get方法山指定視圖
     */
    @JsonView(UserSimpleView.class)
    public String getUsername() {
        return username;
    }
    @JsonView(UserDetailView.class)
    public String getPassword() {
        return password;
    }
}      

Controller

package top.simba1949.controller;
import com.fasterxml.jackson.annotation.JsonView;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import top.simba1949.common.User;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author Theodore
 * @Date 2019/12/2 15:29
 */
@RestController
@RequestMapping("user")
public class UserController {
    /**
     *
     * @param username
     * @param pageable org.springframework.data.domain.Pageable 分頁對象
     * @return
     * 傳回結果如下 [{"username":null},{"username":null},{"username":null}]
     */
    @GetMapping("list1")
    @JsonView(User.UserSimpleView.class)
    public List<User> query(String username, Pageable pageable){
        List<User> users = new ArrayList<>();
        users.add(new User());
        users.add(new User());
        users.add(new User());
        return users;
    }
    /**
     *
     * @param username
     * @return
     *  傳回結果如下 [{"username":null,"password":null},{"username":null,"password":null},{"username":null,"password":null}]
     */
    @GetMapping("list2")
    @JsonView(User.UserDetailView.class)
    public List<User> query(String username){
        List<User> users = new ArrayList<>();
        users.add(new User());
        users.add(new User());
        users.add(new User());
        return users;
    }
}