springMVC自定义json序列化格式,将Date格式化为字符串
原创
©著作权归作者所有:来自51CTO博客作者踏行天下的原创作品,请联系作者获取转载授权,否则将追究法律责任
方法1:
public class CustomDateSerializer extends JsonSerializer {
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
springMVC整合jackson后,可以自定义json转换的数据,例如数据库的datetime类型,java获取后jackson默认将该类型转为long,所以前端页面看到的是一串数字,我们可以自定义如上代码的转换器,返回数据到前台的时候就可以按照我们的需要返回格式化后的字符串类型数据。
注意,有了转换器,千万别忘了在domain字段上加上注解,将jackson在转换json的时候调用我们定义的转换器:
@JsonSerialize(using = CustomDateSerializer.class)
public Date getJoinTime() {
return joinTime;
}
这里我加到get方法上,返回前段的时候就会调用我们定义的转换器了。
-------------------------------------------------------------------
方法2:
经过多次测试,主要是jar文件版本不同造成的;
这里采用的相关jar及版本如下:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.5.1</version>
</dependency>
使用@JsonFormat注解
@JsonFormat(pattern = "yyyy-MM-ddHH:mm:ss")
public Date getLastTime() {
return lastTime;
}
public void setLastTime(Date lastTime) {
this.lastTime = lastTime;
}