使用环境: springboot jackson mysql
如果数据库中配置的是datetime类型,使用@JsonFormat( pattern = "yyyy-MM-dd") 是没有问题的,但是有些时间不需要带时分秒,所以数据库中弄成了date,就因为这个jsonFormat就不起作用了,返回的前台的还是一大串,经过一翻搜索,最终找到一篇这样的文章:
https://github.com/spring-projects/spring-boot/issues/4065
跟这哥们遇到的问题一样,受这里面一段示例启发
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author HS
* @date 2016年6月12日 下午3:59:24
* @Description: TODO
*
*/
public class TestSvn {
/**
* @author HS
* @date 2016年6月12日 下午3:59:24
* @Description: TODO
*
* @param args
* @throws JsonProcessingException
*/
public static void main(String[] args) throws JsonProcessingException {
// TODO Auto-generated method stub
ObjectMapper objectMapper = new ObjectMapper();
System.out.println(objectMapper.writeValueAsString(new Foo(new java.util.Date())));
System.out.println(objectMapper.writeValueAsString(new Foo(new java.sql.Date(System.currentTimeMillis()))));
}
}
public class Foo implements java.io.Serializable {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date testDate;
public Date getTestDate() {
return testDate;
}
public void setTestDate(Date testDate) {
this.testDate = testDate;
}
public Foo(Date testDate) {
super();
this.testDate = testDate;
}
}
自己也敲了这段示例,最开始没加shape = JsonFormat.Shape.STRING,发现跟他输出的结果不一致,第二个输出变成了毫秒数,加上之后就好了,于是才联想到我这的问题
必须要使用如下形式:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
完美解决数据库中是date类型 json转换的问题