解决Date对象转变为JSON时变成时间戳的问题
最近⽤JSON处理Date类型的对象时,发现会变成时间戳的形式,如下图。
这⾥顺便说⼀下时间戳的含义,时间戳是指格林威治时间1970年01⽉01⽇00时00分00秒(北京时间1970年01⽉01⽇08时00分00秒)起到现在的总秒数。是⼀份能够表⽰⼀份数据在⼀个特定时间点已经存在的完整的可验证的数据。
解决⽅法:关闭时间戳功能,并设置⽇期格式,这样就能显⽰出正确的⽇期格式了。
@Controller
public class UserController {
@RequestMapping("/test")
@ResponseBody
public String json() throws JsonProcessingException{
ObjectMapper mapper = new ObjectMapper();
//关闭时间戳的功能
//转换时间格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//让mapper指定时间⽇期格式为SimpleDateFormat
mapper.setDateFormat(sdf);
Date date = new Date();
//将⽇期对象转换为json字符串格式
String result =  mapper.writeValueAsString(date);
return result;
}
}
这⾥我们可以将关闭时间戳和设置⽇期格式的功能封装为⼀个⼯具类,实现代码的复⽤。
public class JsonUtils {
/**
json转换对象* 设置⽇期格式
* @param object 传⼊的待转换格式的⽇期对象
* @return json字符串
*/
public static String getJson(Object object){
return getJson(object,"yyyy-MM-dd HH:mm:ss");
}
/**
* 设置其他⽇期格式
* @param object 传⼊的待转换格式的⽇期对象
* @param dateFormat ⾃定义的⽇期格式
* @return  json字符串
*/
public static String getJson(Object object,String dateFormat){
ObjectMapper mapper = new ObjectMapper();
//关闭时间戳的功能
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
//让mapper指定时间⽇期格式为SimpleDateFormat
mapper.setDateFormat(sdf);
//将⽇期对象转换为json字符串格式
try {
return mapper.writeValueAsString(object);
}catch (JsonProcessingException e){
e.printStackTrace();
}
return null;
}
}
然后通过调⽤⼯具类的⽅式就可以直接进⾏⽇期格式的转换了。
@Controller
public class UserController {
@RequestMapping("/test")
@ResponseBody
public String json() throws JsonProcessingException{
Json(new Date());
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。