SSM使用jackjson输出日期的处理

本来需要把数据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“

 

你可能感兴趣的:(SSM,java,ssm,jackjson,@JsonSerialize)