1. 程式人生 > 其它 >java web介面返回json資料時總是少一個屬性

java web介面返回json資料時總是少一個屬性

技術標籤: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方法