Springboot封装统一格式的参数JSON

简介: 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);

   }

}

测试结果

4a8a0c84471c45d8bba405c0e06fb120.png

08d21dbda174494a919ba3dcc09e9162.png

5947409b191a48b5aa6f37ad3639aac1.png

相关文章
|
19小时前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(支持并行网关)
17 3
|
19小时前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
11 2
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)
|
19小时前
|
XML JSON 前端开发
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
11 3
基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(排它条件网关)
|
19小时前
|
JSON Java 数据格式
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
|
19小时前
|
前端开发 Java
SpringBoot之自定义注解参数校验
SpringBoot之自定义注解参数校验
19 2
|
19小时前
|
Java 微服务 Spring
Spring Boot中获取配置参数的几种方法
Spring Boot中获取配置参数的几种方法
22 2
|
19小时前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
24 0
|
19小时前
|
存储 JSON DataWorks
DataWorks产品使用合集之DataWorks将 MongoDB 中的数组类型写入到 DataWorks 的单个字段时,表示为字符串格式而非 JSON 格式如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
26 3
|
19小时前
|
JSON Java 数据处理
Spring Boot与Jsonson对象:灵活的JSON操作实战
【4月更文挑战第28天】在现代Web应用开发中,JSON数据格式的处理至关重要。假设 "Jsonson" 代表一个类似于Jackson的库,这样的工具在Spring Boot中用于处理JSON。本篇博客将介绍Spring Boot中处理JSON数据的基本概念,并通过实际例子展示如何使用类似Jackson的工具进行数据处理。
26 0
|
19小时前
|
JSON fastjson Java

热门文章

最新文章