背景:因为数据库中存的时间相关的字段都是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的是只有数据表的属性不管有没有值都会返回