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

相关文章
|
9天前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
28天前
|
JSON 人工智能 算法
探索大型语言模型LLM推理全阶段的JSON格式输出限制方法
本篇文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
2月前
|
JSON JavaScript Java
对比JSON和Hessian2的序列化格式
通过以上对比分析,希望能够帮助开发者在不同场景下选择最适合的序列化格式,提高系统的整体性能和可维护性。
95 3
|
2月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
361 12
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
169 1
|
2月前
|
Java
springboot将list封装成csv文件
springboot将list封装成csv文件
59 4
|
8月前
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
138 1
|
5月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
126 1

热门文章

最新文章