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

相关文章
|
1月前
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
43 3
|
1月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
125 1
|
1月前
|
Java
springboot将list封装成csv文件
springboot将list封装成csv文件
33 4
|
1月前
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
1月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
50 1
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
1月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
下一篇
DataWorks