JsonResult工具类
最近学习前后端分离,前端是layui,SpringBoot需要返回json字符串,为了规范返回格式,参照了几个JsonResult工具类。部分是使用的一个JavaBean,即只包含私有属性和get/set方法的对象。定义了code、msg和data这三个属性,我一开始就使用的是这个,但layui中加载table的时候还需要返回一个count值,可以考虑继承或者再增加一个count属性。但这样做如果再需要返回一个其它值又会麻烦。所以我考虑直接使用一个Map集合来存储,需要额外返回的时候直接使用put即可加入一个新的返回值。
在controller层加上@RestController 可直接返回list、map、JavaBean对象等,Spring Boot默认使用Jackson会自动将该对象转换为json字符串
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/*
使用@RestController或@ResponseBody时,可直接返回该对象,
Spring Boot默认使用Jackson会自动将该对象转换为json字符串
如{"code": 0,"msg": "","data": [{}, {}]}
*/
public class JsonResult extends HashMap<String, Object> implements Serializable {
public static final long serialVersionUID = 1L;
public static final int SUCCESS = 0;
public static final int FAIL = 1;
public static final int ERROR = 2;
public static final int LOGOUT = 1001;
public JsonResult(int code, String msg, Object data) {
super(3); //继承自Map,设置初始容量
this.put("code", code); //状态码,layui中code=0表示成功
this.put("msg", msg); //提示消息
this.put("data", data); //数据体
}
//一般返回code、msg和data这三个即可,但layui加载table时还要求count值
//添加额外的返回值
public JsonResult put(String key, Object value) {
super.put(key, value);
return this;
}
//快速返回请求成功
public static JsonResult success(Object data) {
return new JsonResult(SUCCESS, "ok", data);
}
//快速返回请求失败
public static JsonResult fail(String msg) {
return new JsonResult(FAIL, msg, null);
}
public static JsonResult error(String msg, Object data) {
return new JsonResult(ERROR, msg, data);
}
public static JsonResult logout() {
return new JsonResult(LOGOUT, "未登录", null);
}
//快速生成一个Map键值对
public static Map<String, Object> fastMap(String key, Object value) {
Map<String, Object> data = new HashMap<>(1);
data.put(key, value);
return data;
}
}
除data内容添加额外的返回键值对(layui中使用table时需要额外的count)
return JsonResult.success(list).put("count", count);
这篇博客介绍了在前后端分离的项目中,如何使用JsonResult工具类来规范SpringBoot返回JSON格式的数据。作者讨论了使用JavaBean与Map集合的优缺点,并提到在使用@RestController注解时,Spring Boot会自动利用Jackson将对象转换为JSON字符串,以适应layui等前端框架的数据需求。
1583

被折叠的 条评论
为什么被折叠?



