Springboot封装统一格式的参数JSON

背景:

	开发中为了前后端交互返回结果统一,对于rest的服务,都是json格式。今天我们介绍一下,统一结果封装返回以及json格式转化的相关的内容。

依赖

lombok一个为了简化代码,阿里的json转化工具,google的json转化工具。

    <!--fastjson-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.80</version>
    </dependency>
    <!--gson-->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.8.9</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>

统一结果类

package com.elite.springboot.Common;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 统一结果
 */
@Accessors(chain=true)
@Data
public class R {
    //请求返回的代码
    private Integer code;
    //请求的信息
    private String msg;
    //数据
    private Object data;

    //成功
    public static R ok(Object data){
        return new R().setCode(200).setMsg("成功").setData(data);
    }
    //成功
    public static R ok(Integer code,String msg,Object data){
        return new R().setCode(code).setMsg(msg).setData(data);
    }
    //失败
    public static R fail(){
        return new R().setCode(400).setMsg("请求失败!");
    }
    //失败
    public static R fail(Integer code,String msg){
        return new R().setCode(code).setMsg(msg).setData(null);
    }
}

我们还可以自定义统一的错误编码格式,为了出错方便进行排查。

实体类

package com.elite.springboot.entity;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

//用户
@Data
@Getter
@Setter
public class User {

    private String userName;
    private Integer age;
    private String address;
}

返回格式

使用注解@RestController,请求返回会自动转化为json格式的,我们也可以返回字符串,自己转化为json格式。使用gson或者fastjson.

package com.elite.springboot.controller;

import com.alibaba.fastjson.JSON;
import com.elite.springboot.Common.R;
import com.elite.springboot.entity.User;
import com.google.gson.Gson;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping
@RestController
//@Controller
//@ResponseBody
public class CommonController {


    //不带返回数据的格式
    @GetMapping("/ok1")
    public R ok1(){
        return R.ok(null);
    }
    //因为注解restcontroller => @controller + @ResponseBody
    //带有返回数据的json格式
    @GetMapping("/ok2")
    public R ok2(){
        User u = new User();
        u.setUserName("牛奶糖");
        u.setAge(22);
        u.setAddress("xxx省");
        return R.ok(200,"成功",u);
    }
    //带有返回数据的json格式
    @GetMapping("/fail")
    public R fail(){
        return R.fail();
    }

    //使用json转换工具转换返回数据fastjson
    @GetMapping("/fastjson")
    public String fastjson(){
        User u = new User();
        u.setUserName("牛奶糖");
        u.setAge(22);
        u.setAddress("xxx省");
        R r = R.ok(u);
        return JSON.toJSONString(r);
    }

    //使用json转换工具转换返回数据fastjson
    @GetMapping("/gson")
    public String gson(){
        User u = new User();
        u.setUserName("牛奶糖");
        u.setAge(22);
        u.setAddress("xxx省");
        R r = R.ok(u);
        Gson gson = new Gson();
        return gson.toJson(r);
    }
}

测试结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘同学要加油呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值