java web介面返回json資料時總是少一個屬性
阿新 • • 發佈:2020-12-12
技術標籤:java
controller介面返回的程式碼如下:
返回的result物件如下:
/** * @Description 返回結果實體物件 * @Author sunchao * @Date: 2017-11-29 14:43 * @Mender: libing */ public final class Result { private int code; private String msg; private Object result; public Result() { } public static Result paramFail = new Result(Code.ParamError.value, false, Msg.ParamError.value()); public static Result programFail = new Result(Code.InnerError.value, false, Msg.InnerError.value()); public Result(int statusCode, Object result) { this(statusCode, result, ""); } public Result(int statusCode, Object result, String msgInfo) { this.msg = msgInfo; this.code = statusCode; this.result = result; } public static Result success(Object result) { Result r = new Result(Code.Success.value, true, null); r.setResult(result); return r; } /** * 返回引數錯誤結果 * @param result_obj 返回的結果 * @return */ public static Result getParamErrorResult(Object result_obj){ Result result=getResult(result_obj); result.setCode(Result.Code.ParamError.value()); if(ParamUtil.isEmpty(result.getMsg())){ result.setMsg(TipsMessage.PARAM_ERROR); } return result; } /** * 返回內部錯誤結果 * @param result_obj 返回的結果 * @return */ public static Result getErrorResult(Object result_obj){ Result result=getResult(result_obj); result.setCode(Result.Code.UnKnowError.value()); if(ParamUtil.isEmpty(result.getMsg())){ result.setMsg(TipsMessage.INNER_ERROR_MSG); } return result; } public Result(int statusCode) { this(statusCode, null, ""); } public int getCode() { return code; } public void setCode(int code) { this.code = code; } private static Result getResult(Object result_obj){ Result result=new Result(); if (result_obj != null) { if(result_obj instanceof Result) { result = (Result) result_obj; }else{ result.setResult(result_obj); } }else{ result.setResult(result_obj); } if(result.getMsg()==null){ result.setMsg(""); } return result; } public void setResult(Object result) { this.result = result; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public enum Code { InnerError(-2), Success(0), ParamError(-1), UnKnowError(-3), AuthError(-4); private Code(int value) { this.value = value; } private int value = 0; public int value() { return value; } } public enum Msg { InnerError("內部錯誤"), Success("執行成功"), ParamError("引數錯誤"), UnKnowError("內部錯誤"), PermissionError("token驗證錯誤"); private Msg(String msg) { this.msg = msg; } private String msg = ""; public String value() { return msg; } } }
但是按理說應該返回三個屬性
private int code;
private String msg;
private Object result;
但是隻返回了兩個
最後檢查原因:
json在序列化時會呼叫屬性的get方法來取值
少寫了result屬性的get方法