本来需要把数据2018-3-20这样的日期格式传到前台,以json显示在页面上。{
"clicknum": 3,
"contributer": "admin",
"date": {
"date": 6,
"day": 2,
"hours": 0,
"minutes": 0,
"month": 2,
"seconds": 0,
"time": 1520265600000,
"timezoneOffset": -480,
"year": 118
},
"detail": "",
发现在控制器转换list
狂百度一通。看到一位兄弟说是使用的JSONArray与jackjson的jar不同所致,JSONArray使用的net.sf.json,jackjson使用com.fasterxml.jackson,于是乎把转换方式改成如下:
ObjectMapper mapper=new ObjectMapper();
String jsonlist = mapper.writeValueAsString(listbean);
得到的结果:
{"host":"元彪",
"date":1520265600000,
"simplecontent":"六指琴魔",
"typedetail":"仅仅只是一部武侠",......
}
日期是提取到了,可是时间格式涛声依旧。在简单的servlet/jsp开发模式中,日期是很好处理的。SSM框架整合因为持久层交给mybatis管理,再经业务层到控制器。内部逻辑插手不进去。在mvc的配置中配置objectMapper不生效。
无意间发现有这么个注解@JsonSerialize,处理数据转换,在mybatis操作数据库时候可以处理json日期的转换。
1、先添加自定义转换格式工具类:
package com.boge.ssmdemo.entity;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class CustomDateSerializer extends JsonSerializer {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
}
2、在bean里,get或set方法前加入注解
@JsonSerialize(using = CustomDateSerializer.class)
public Date getDate() {
return date;
}
OK。标准的日期出来了。
{"host":"吴京","date":"2018-03-06","simplecontent":"功夫小子闯情关","typedetail":"太极",......}
补充:如果需要生成”1992-05-02 15:20:10“这样的时间格式,需要传入”yyyy-MM-dd HH-mm-ss“ 的时间格式,如果其中的HH改成hh,那将生成12小时制的时间,”1992-05-02 15:20:10“将变成”1992-05-02 03:20:10“