背景:因爲數據庫中存的時間相關的字段都是date類型的
Date day = new Date();
params.setFdCreateTime(day);
類似於這樣通過實體映射存到數據庫中
但是前臺返回json的時候可能就是下圖這樣的,肯定是不友好的,前臺如果要展示的話肯定還要遍歷再formate一下
如果要很好的解決上述問題,需要通過alibaba.fastjson的@JSONField(format = "yyyy-mm-dd hh:mm:ss")的註解
但是在代碼實現過程中發現,雖然都加了這個註解,但是有的返回的是經過formate之後的理想數據,有的確實原始數據,讓我真的很無解
然後我就仔細追查對比代碼,才發現
能夠正常返回formate數據的是map裏邊直接放了一個查詢結果list(list裏含有date類型的數據)
@RequestMapping(value = "/detail", method = RequestMethod.POST)
public Object showDetail(HttpServletRequest httpServletRequest,@RequestBody Map<String,Object> params) {
Map<String, Object> result = courseService.detailMap(params);
return Result.ok(result,"查詢成功");
}
postman對應的接口返回的數據如下
而返回原始數據的是json裏邊放的是一個經過json轉化的list
public Object getCurriculum(HttpServletRequest httpServletRequest,@RequestBody Map<String,Object> params) {
//checkToken(httpServletRequest, parentsService);
List<Map<String, Object>> result = courseService.getCurriculum(params);
JSONObject json = new JSONObject();
json.put("list", JSONArray.parseArray(JSON.toJSONString(result)));
return Result.ok(json,"查詢成功");
}
postman對應的接口返回的數據如下
後來把返回原始數據的代碼改成map放list
@RequestMapping(value = "/getCurriculum", method = RequestMethod.POST)
public Object getCurriculum(HttpServletRequest httpServletRequest,@RequestBody Map<String,Object> params) {
Map<String, Object> map = courseService.getCurriculum(params);
return Result.ok(map,"查詢成功");
}
serviceImpl中的代碼
public Map<String, Object> getCurriculum(Map<String, Object> params) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("list",classCurriculumDao.selectByClassId(params));
return map;
}
postman返回數據:
但是也不難發現,經過json轉化的list只顯示不爲空的字段,而直接map裏邊放list的是隻有數據表的屬性不管有沒有值都會返回