(六)自定義結果返回
阿新 • • 發佈:2019-02-11
本篇介紹如何改變JSON輸出策略以及改變返回結果欄位名
改變json輸出策略
預設使用阿里的fastjson進行json輸出
JSON.toJSONString(obj)
如果要更換輸出策略,操作方式如下:
@Override
protected void initApiConfig(ApiConfig apiConfig) {
...
// 自定義json格式輸出,將null字串變成""
apiConfig.setJsonResultSerializer(new JsonResultSerializer(){
@Override
public String serialize(Object obj) {
return JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty);
}
});
...
}
上面示例是將null字串變成”“,如果是給安卓app提供介面,這個會很管用。
改變json格式
easyopen預設的返回類是ApiResult,解析成json格式為:
{
"code": "0",
"msg": "",
"data": {...}
}
我們也可以自定義返回結果,比如我們要返回這樣的json:
{
"errCode":"0",
"errMsg":"",
"body":{...}
}
- 首先,新建結果類,實現com.gitee.easyopen.Result介面:
import com.gitee.easyopen.Result;
public class MyResult implements Result {
private static final long serialVersionUID = -6618981510574135069L;
private String errCode;
private String errMsg;
private String body;
@Override
public void setCode(Object code) {
this.setErrCode(String.valueOf(code));
}
@Override
public void setMsg(String msg) {
this.setErrMsg(msg);
}
@Override
public void setData(Object data) {
this.setBody(String.valueOf(data));
}
public String getErrCode() {
return errCode;
}
public void setErrCode(String errCode) {
this.errCode = errCode;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
}
MyResult類可定義自己想要的欄位名字,實現Result介面對應的方法即可
- 然後,新建一個結果生成器,實現ResultCreator介面:
import com.gitee.easyopen.Result;
import com.gitee.easyopen.ResultCreator;
public class MyResultCreator implements ResultCreator {
@Override
public Result createResult(Object returnObj) {
MyResult ret = new MyResult();
ret.setCode(0);
ret.setData(returnObj);
return ret;
}
@Override
public Result createErrorResult(Object code, String errorMsg, Object data) {
MyResult ret = new MyResult();
ret.setCode(code);
ret.setMsg(errorMsg);
ret.setData(data);
return ret;
}
}
ResultCreator介面定義兩個方法,createResult是返回正確內容的方法,createErrorResult是返回錯誤時候的方法。
分別實現它們,用我們剛才新建的MyResult類。
- 最後,配置結果生成器,在initApiConfig方法中配置:
@Controller
@RequestMapping("/project/api")
public class IndexController extends ApiController {
@Override
protected void initApiConfig(ApiConfig apiConfig) {
// 配置結果生成器
apiConfig.setResultCreator(new MyResultCreator());
省略其它程式碼...
}
}
呼叫apiConfig.setResultCreator(new MyResultCreator());進行配置