我想返回一个数据类型
{
"code": "500",
"status": "fail",
"message": "fail",
"result": null,
"detail": "",
"data": {}
}
code 是状态码
message 是状态信息
data 请求的值,如果错误就返回为空
我用Java实现如下
使用fastjson来创建空JSON对象,如果有数据再给这个JSON对象赋值,感觉这个写法不太好,请问一般是怎么写?
String code = "500";
String status = "fail";
String message = "fail";
String detail = "";
JSONObject jsonTechnologyArticle = JSON.parseObject("{}");
ResponseData responseData = ResponseUtility.handleData(
code, status, message,
detail, jsonTechnologyArticle);
return responseData;
自己改良后的返回信息类型
package cn.spring.inter.entity;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ResponseResult {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
// 响应业务状态
private String status;
// 响应消息
private String msg;
// 响应中的数据
private Object data;
// 响应提示信息
private String detail;
public static ResponseResult build(String status, String msg, Object data) {
return new ResponseResult(status, msg, data);
}
public static ResponseResult build(String status, String msg, Object data, String detail) {
return new ResponseResult(status, msg, data, detail);
}
public static ResponseResult ok(Object data) {
return new ResponseResult(data);
}
public static ResponseResult errorMsg(String msg) {
return new ResponseResult("500", msg, null);
}
public static ResponseResult errorMap(Object data) {
return new ResponseResult("501", "error", data);
}
public static ResponseResult errorTokenMsg(String msg) {
return new ResponseResult("502", msg, null);
}
public static ResponseResult errorException(String msg) {
return new ResponseResult("555", msg, null);
}
public static ResponseResult errorUserQQ(String msg) {
return new ResponseResult("556", msg, null);
}
public ResponseResult() {
}
public ResponseResult(String status, String msg, Object data, String detail) {
this.status = status;
this.msg = msg;
this.data = data;
this.detail = detail;
}
public ResponseResult(String status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public ResponseResult(Object data) {
this.status = "200";
this.msg = "SUCCESS";
this.data = data;
}
public Boolean isOK() {
return this.status == "200";
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
}
###public class AccessResult {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
// 响应业务状态
private Integer status;
// 响应消息
private String msg;
// 响应中的数据
private Object data;
@JsonIgnore
private String ok; // 不使用
public static AccessResult build(Integer status, String msg, Object data) {
return new AccessResult(status, msg, data);
}
public static AccessResult build(Integer status, String msg, Object data, String ok) {
return new AccessResult(status, msg, data, ok);
}
public static AccessResult ok(Object data) {
return new AccessResult(data);
}
public static AccessResult ok() {
return new AccessResult(null);
}
public static AccessResult errorMsg(String msg) {
return new AccessResult(500, msg, null);
}
public static AccessResult errorMap(Object data) {
return new AccessResult(501, "error", data);
}
public static AccessResult errorTokenMsg(String msg) {
return new AccessResult(502, msg, null);
}
public static AccessResult errorException(String msg) {
return new AccessResult(555, msg, null);
}
public static AccessResult errorUserQQ(String msg) {
return new AccessResult(556, msg, null);
}
public AccessResult() {
}
public AccessResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public AccessResult(Integer status, String msg, Object data, String ok) {
this.status = status;
this.msg = msg;
this.data = data;
this.ok = ok;
}
public AccessResult(Object data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
public Boolean isOK() {
return this.status == 200;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public String getOk() {
return ok;
}
public void setOk(String ok) {
this.ok = ok;
}
}
code
、status
可以采用枚举来定义
举个例子,可以考虑使用静态方法来生成返回对象(以下代码仅供参考,跑是跑不起来的):
@Data
public class MyResponse<T> {
private String message;
private T data;
// 其他属性
public MyResponse(String code, T data) {
this.setCode(code);
this.setData(data);
}
// 其他构造方法
public static <T> MyResponse<T> fail(T data) {
return new MyResponse<>("500", data);
}
// 其他静态方法
}
public MyResponse<User> get(int id) {
// 其他操作
return MyResponse.fail(...);
}
另外诸如 code
、status
可以采用枚举来定义,message
可以用资源字典来做国际化/本地化。
###
ResponseEntity
了解一下这个