package net.carbon.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import net.carbon.enums.BizCodeEnum; @Data @AllArgsConstructor @NoArgsConstructor public class JsonData { /** * 状态码 0 表示成功,1表示处理中,-1表示失败 */ private Integer code; /** * 数据 */ private Object data; /** * 描述 */ private String msg; /** * 获取远程调用数据对象 * 注意 支持多单词下划线转驼峰(序列化和反序列化) * 空对象不序列化 */ public T getData(TypeReference typeReference) { return JSON.parseObject(JSON.toJSONString(data), typeReference); } /** * 成功,传入数据 * * @return */ public static JsonData buildSuccess() { return new JsonData(0, null, null); } /** * 成功,传入数据 * * @param data * @return */ public static JsonData buildSuccess(Object data) { return new JsonData(0, data, null); } /** * 失败,传入描述信息 * * @param msg * @return */ public static JsonData buildError(String msg) { return new JsonData(-1, null, msg); } /** * 自定义状态码和错误信息 * * @param code * @param msg * @return */ public static JsonData buildCodeAndMsg(int code, String msg) { return new JsonData(code, null, msg); } /** * 传入枚举,返回信息 * * @param codeEnum * @return */ public static JsonData buildResult(BizCodeEnum codeEnum) { return JsonData.buildCodeAndMsg(codeEnum.getCode(), codeEnum.getMessage()); } }