SpringBoot的响应客户端渲染(三)

目录

一、目标

二、构建接口返回json

三、构建统一的接口返回格式

四、JackSon的基本使用演绎法

1、如何隐藏bean的字段,不返回给前端,如密码字段;

2.如何指定日期字段的返回格式;

3.为null的字段不返回,有值才返回如何做到


一、目标

  • SpringBoot构造并且返回一个json对象。(构建统一的接口返回格式)
  • JackSon的基本使用演绎法。(基本知识:1.如何隐藏bean的字段,不返回给前端,如密码字段;2.如何指定日期字段的返回格式;3.为null的字段不返回,有值才返回如何做到)

二、构建接口返回json

1.创建基础bean对象

package com.example.springbootdemo.bean;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;

import java.util.Date;

public class User {

    private String name;

    private String passWord;

    private Integer age;

    private Date birthday;

    private String desc;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", passWord='" + passWord + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                ", desc='" + desc + '\'' +
                '}';
    }
}

 代码结构:

2.编写controller

package com.example.springbootdemo.controller.user;

import com.example.springbootdemo.bean.User;
import com.example.springbootdemo.common.BaseResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController //@RestController = @Controller+ @ResponseBody
@RequestMapping("/user")
public class UserController {

    /**
     * 这种直接返回实体不推荐,应该返回统一的封装格式
     * @return
     */
    @GetMapping("/get")
    public User user(){
        User user = new User();
        user.setName("wzc");
        user.setAge(30);
        user.setBirthday(new Date());
        user.setPassWord("wmhp");
        return user;
    }
}

3.启动项目,访问http://localhost:8080/user/get,返回结果为:

 

三、构建统一的接口返回格式

        如上返回,不同bean的字段不一致,我们可以封装一个统一的返回体,比如接口是否成功的code标识,成功返回1,否则-1,返回的信息如错误的原因字段msg,返回的具体实体Object.

1.自定义返回体类

package com.example.springbootdemo.common;

public class BaseResult {

    private String code;

    private String msg;

    private Object data;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    public BaseResult(String code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public static BaseResult success(Object t){
        BaseResult baseResult = new BaseResult("0", "success", t);
        return baseResult;
    }
}

2.重写controller方法

package com.example.springbootdemo.controller.user;

import com.example.springbootdemo.bean.User;
import com.example.springbootdemo.common.BaseResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController //@RestController = @Controller+ @ResponseBody
@RequestMapping("/user")
public class UserController {

    /**
     * 这种直接返回实体不推荐,应该返回统一的封装格式
     * @return
     */
    @GetMapping("/get")
    public User user(){
        User user = new User();
        user.setName("wzc");
        user.setAge(30);
        user.setBirthday(new Date());
        user.setPassWord("wmhp");
        return user;
    }

    @GetMapping("/getUser")
    public BaseResult getUser(){
        User user = new User();
        user.setName("wzc33");
        user.setAge(30);
        user.setBirthday(new Date());
        user.setPassWord("wmhp2");
        return BaseResult.success(user);
    }
}

 3.启动项目访问http://localhost:8080/user/getUser返回的结果为:

四、JackSon的基本使用演绎法

1、如何隐藏bean的字段,不返回给前端,如密码字段;

使用注解

@JsonIgnore
private String passWord;

再次访问,返回的结果为:

2.如何指定日期字段的返回格式;

使用注解

@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss a", locale = "zh", timezone = "GTM+8")
private Date birthday;

3.为null的字段不返回,有值才返回如何做到

使用注解

@JsonInclude(JsonInclude.Include.NON_NULL)
private String desc;

可以看到desc不返回,当desc有值时是返回的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值