SpringMVC返回JSON数据date日期格式化,解决返回为TIMESTAMP时间戳格式

版权声明:整理不易,转载请注明出处。 https://blog.csdn.net/linmengmeng_1314/article/details/82839207

数据库中使用的是timestamp类型,在po类里面属性的格式为Date类型,但是在返回json字符串的时候,却是返回的是long类型的数据,这个不是我们需要的数据类型,之前一直想着前端使用js直接格式化一下就好了,但是前端说只做数据的展示,不做数据的处理,好吧,还是后端来处理数据格式吧。

解决方法:

  1. 首先是引入必要的jar
    jackson-core.jar,jackson-databind.jar,jackson-annotations.jar,下面是pom.xml中引入的jackson依赖:
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.8</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.8</version>
        </dependency> 
  1. 直接在po类的Date属性的get方法上添加注解:@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")即可,可以根据自己的需要是否显示时分秒。
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	public Date getCreateDateTime() {
		return createDateTime;
	}

这样在@ResponseBody注解返回的json中,时间类型timestam,即可正常显示为我们设定的时间格式了,但是我发现有一个问题,在控制台打印这个po类的toString方法时,timestamp类型的属性还是显示为毫秒的形式。

我的理解是:在数据库查出来的Date类型的数据就是毫秒类型的了,po类的toString方法只是将数据拼接成字符串,并没有对数据格式进行处理,而在@ResponseBody返回的数据上,getter方法上面的注解才生效,限制了时间的格式。

猜你喜欢

转载自blog.csdn.net/linmengmeng_1314/article/details/82839207