您好,登錄后才能下訂單哦!
今天小編給大家分享一下json封裝數(shù)據(jù)的方法是什么的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
還記得快遞一百api接口返回的JSON嗎?我們請求這個鏈接的時候:
鏈接:http://www.kuaidi100.com/query?type=ems&postid=1111111111111
返回如下結(jié)果:
{
"message": "ok",
"nu": "1111111111111",
"ischeck": "1",
"com": "ems",
"status": "200",
"condition": "F00",
"state": "3",
"data": [
{
"time": "2021-05-26 09:45:08",
"context": "查無結(jié)果",
"ftime": "2021-05-26 09:45:08"
}
]
}
在看了其他api文檔后我們發(fā)現(xiàn),很多api返回的json都有一定的特點(diǎn)。比如都有status,都有message等等。接下來小編就來帶你了解,一個json應(yīng)該有哪些數(shù)據(jù)吧?
一個json應(yīng)該有哪些數(shù)據(jù),應(yīng)該由前端和后端進(jìn)行討論后得出,小編列出一些選項供各位小伙伴參考:
status:響應(yīng)狀態(tài),一個json應(yīng)該告訴前端返回狀態(tài),方便前端進(jìn)行處理,比如出現(xiàn)404的時候應(yīng)該通過前端跳轉(zhuǎn)到404頁面,響應(yīng)信息就是用在這里。
message:響應(yīng)信息,這個信息一般用來報錯,如果沒錯就返回ok,有出現(xiàn)錯誤一般后端會把錯誤填寫入這個字段中,比如權(quán)限不足這樣的輔助提示,前端也可以將這個信息展示給用戶。
data:用來存放數(shù)據(jù),一般會以數(shù)組方式來存放數(shù)據(jù),以對象數(shù)組存放的數(shù)據(jù)通常用來存放列表數(shù)據(jù)
page:存放分頁的頁數(shù),有做數(shù)據(jù)分頁的情況下,一般會返回一個page值。前端可以針對這個page值確定當(dāng)前分頁的頁數(shù)
有些json還會根據(jù)前端的需求定義一些返回值,比如標(biāo)題,url,時間等,json數(shù)據(jù)的定制具體還是由前后端交流后得出。
以下是小編開發(fā)過的一個web項目的json封裝代碼,各位小伙伴可以用作參考:
設(shè)置狀態(tài)碼:
public enum ResultType {
SUCCESS("200", "操作成功"),
FAIL("400", "操作失敗"),
UNAUTHORIZED("401", "權(quán)限不足"),
NOT_FOUND("404", "接口不存在"),
INTERNAL_SERVER_ERROR("500", "服務(wù)器內(nèi)部錯誤"),
AGAIN_LOGIN("600", "請重新登錄");
private String code;
private String name;
ResultType(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
json封裝:
import java.io.Serializable;
// 請求返回結(jié)果對象
public class Result<T> implements Serializable{
//返回狀態(tài)編碼
private String statusCode = ResultType.SUCCESS.getCode();
//返回提示信息
private String message = ResultType.SUCCESS.getName();
//返回結(jié)果
private T data = null;
//是否成功
private Boolean success = true;
//獲取狀態(tài)編碼
public String getStatusCode() {
return statusCode;
}
//設(shè)置狀態(tài)編碼@param statusCode
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
//獲取提示信息
public String getMessage() {
return message;
}
// 設(shè)置提示信息 @param message
public void setMessage(String message) {
this.message = message;
}
//獲取返回結(jié)果@return
public T getData() {
return data;
}
//設(shè)置返回結(jié)果@param data
public void setData(T data) {
this.data = data;
}
public Boolean isSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public void addError() {
this.addError("");
}
public void addError(String message) {
this.success = false;
this.message = message;
this.statusCode = ResultType.INTERNAL_SERVER_ERROR.getCode();
if(this.message == null || "".equals(this.message)){
this.message = ResultType.INTERNAL_SERVER_ERROR.getName();
}
}
public void success() {
this.success("");
}
public void success(String message) {
this.success = true;
this.message = message;
this.statusCode = ResultType.SUCCESS.getCode();
if(this.message == null || "".equals(this.message)){
this.message = ResultType.SUCCESS.getName();
}
}
public void fail() {
this.fail("");
}
public void fail(String message) {
this.success = false;
this.message = message;
this.statusCode = ResultType.FAIL.getCode();
if(this.message == null || "".equals(this.message)){
this.message = ResultType.FAIL.getName();
}
}
public void unauthorized() {
this.unauthorized("");
}
public void unauthorized(String message) {
this.success = false;
this.message = message;
this.statusCode = ResultType.UNAUTHORIZED.getCode();
if(this.message == null || "".equals(this.message)){
this.message = ResultType.UNAUTHORIZED.getName();
}
}
public void notFound() {
this.notFound("");
}
public void notFound(String message) {
this.success = false;
this.message = message;
this.statusCode = ResultType.NOT_FOUND.getCode();
if(this.message == null || "".equals(this.message)){
this.message = ResultType.NOT_FOUND.getName();
}
}
public void againLogin() {
this.againLogin("");
}
public void againLogin(String message) {
this.success = false;
this.message = message;
this.statusCode = ResultType.AGAIN_LOGIN.getCode();
if(this.message == null || "".equals(this.message)){
this.message = ResultType.AGAIN_LOGIN.getName();
}
}
}
以上就是“json封裝數(shù)據(jù)的方法是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。