写了那么多,发现白忙活了一场,原来jackson也有一个@JsonFormat注解,将它配置到Date类型的get方法上后,jackson就会按照配置的格式转换日期类型,而不自定义转换器类,欲哭无泪啊。辛苦了那么多,其实别人早已提供,只是没有发现而已。
不说了,直接上方案吧。
1.spring配置照样是这样:
-
<
mvc:annotation-driven
>
2.JsonUtil可以不用了,但如果要自己从response对象输出json,那么还是可以用,但改成了这样
-
package
com.xxx.utils;
-
-
import
java.io.IOException;
-
import
java.text.SimpleDateFormat;
-
import
org.springframework.stereotype.Component;
-
import
com.fasterxml.jackson.databind.ObjectMapper;
-
-
/**
-
* json处理工具类
-
* @author zhangle
-
*/
-
@Component
-
public
class
JsonUtil {
-
-
private
static
final
String DEFAULT_DATE_FORMAT=
“yyyy-MM-dd HH:mm:ss”
;
-
private
static
final
ObjectMapper mapper;
-
-
static
{
-
SimpleDateFormat dateFormat =
new
SimpleDateFormat(DEFAULT_DATE_FORMAT);
-
mapper =
new
ObjectMapper();
-
mapper.setDateFormat(dateFormat);
-
}
-
-
public
static
String toJson(Object obj) {
-
try
{
-
return
mapper.writeValueAsString(obj);
-
}
catch
(Exception e) {
-
throw
new
RuntimeException(
“转换json字符失败!”
);
-
}
-
}
-
-
public
<t> T toObject(String json,Class<t> clazz) {
-
try
{
-
return
mapper.readValue(json, clazz);
-
}
catch
(IOException e) {
-
throw
new
RuntimeException(
“将json字符转换为对象时失败!”
);
-
}
-
}
-
}</t></t>
3.实体类的get方法就需要多一个@JsonFormat的注解配置
-
@DateTimeFormat
(pattern=
“yyyy-MM-dd HH:mm:ss”
)
-
@JsonFormat
(pattern=
“yyyy-MM-dd HH:mm:ss”
,timezone =
“GMT+8”
)
-
public
Date getCreateTime() {
-
return
this
.createTime;
-
}
-
@DateTimeFormat
(pattern=
“yyyy-MM-dd”
)
-
@JsonFormat
(pattern=
“yyyy-MM-dd”
,timezone =
“GMT+8”
)
-
public
Date getBirthday() {
-
return
this
.birthday;
-
}