SpringMVC 返回json的日期格式的问题的解决方法

springMVC中josn的日期类型输出默认是时间戳,需要进行日期格式转换。

格式化输出json

 方法1、

  在实体类的getter方法上面添加@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

  就可以将json的日期格式化。需要导入的json的相关jar包  

  @JsonFromat存在于jackson-annotations-2.1.0.jar中。
  Maven项目需要添加的依赖:    

<!-- json数据 -->
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-mapper-asl</artifactId>
  <version>${jackson.version}</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>${jackson.core.version}</version>
</dependency>

<properties>
    <jackson.version>1.9.13</jackson.version>
    <jackson.core.version>2.4.2</jackson.core.version>
</properties>

在IDEA中查看maven的jar包依赖  

  优缺点:

    优点是简单方便,缺点是需要在每个需要的属性的getter方法上面添加。宏观的看比较繁琐,但实际开发中

    也就一行代码的事情,唯一不好的是mybatis自动生成实体类会覆盖。

 方法2、  

  在上面的方法中虽然简单方便,但缺点也很明显,自动生成代码会覆盖实体类,而且每个日期属性都要手动添加,

  实际中日期属性又是普遍必备。因此,大可全局处理,统一格式。这里需要说下,在数据库中的date和timestamp

  都会被mybatis转换成date对象。至于生日精确到日、时间精确到到秒的格式规范可以让显示层做处理。

  统一成yyyy-MM-dd HH:mm:ss。

  MappingJacksonHttpMessageConverter主要通过ObjectMapper来实现返回json字符串。这里我们继承该类,注册

  一个JsonSerializer<T>。然后在配置文件中注入自定义的ObjectMapper。

  第一步:编写子类继承ObjectMapper  

package cn.ll.ssm.controller.converter;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.ser.CustomSerializerFactory;

/**
* 项目名称:springmvc_02_ssm
* 类名称:CustomJsonDateConverter
* 类描述:解决Date类型返回json格式为自定义格式
* 创建人:LL
* 创建时间:2018年4月29日 上午11:13:08
* @version
*/
public class CustomJsonDateConverter extends ObjectMapper {
    public CustomJsonDateConverter(){
        CustomSerializerFactory factory = new CustomSerializerFactory();
        factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){
          @Override
          public void serialize(Date value,
                     JsonGenerator jsonGenerator,
                     SerializerProvider provider)
              throws IOException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            jsonGenerator.writeString(sdf.format(value));
          }
        });
        this.setSerializerFactory(factory);
      }
}

第二步:在SpringMVC.xml中进行配置  

<mvc:annotation-driven conversion-service="conversionService" validator="validator">
         <mvc:message-converters>
          <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="objectMapper" ref="customObjectMapper"></property>
          </bean>
        </mvc:message-converters>
     </mvc:annotation-driven>

    <bean id="customObjectMapper" class="cn.ll.ssm.controller.converter.CustomJsonDateConverter"></bean>

第三步:

  这个配置无法和上一个@JsonFormat共同使用。由于全局统一了日期格式,date和datetime以及timestamp都是

一个格式,如果生日等date字段需要精简,只能在显示层裁剪。

参考:http://www.jb51.net/article/103032.htm

  

   

 

原文地址:https://www.cnblogs.com/leilong/p/8970777.html

时间: 2024-08-04 12:37:01

SpringMVC 返回json的日期格式的问题的解决方法的相关文章

spring Mvc json返回json的日期格式问题

(一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annotation-driven 2.在依赖管理中添加jackson-mapper-asl <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version

SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式报400错误解决方法

系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 使用SpringMVC开发的时候,页面如果有日期格式的数据,后台接受也是java.util.Date,则报告400错误 .下面是解决方案的演示示例: 这个是实体类,里面createDate就是java.util.Date类型 1 import java.util.Date; 2 3 public class User {

spingmvc 返回json数据日期格式化方法

第一种: json 用的是这个依赖 <!-- JSON lib 开发包 以及它的依赖包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.6.0</version> </dependency> 在springmvc返回j

SpringMVC返回Json,自定义Json中Date类型格式

http://www.cnblogs.com/jsczljh/p/3654636.html ———————————————————————————————————————————————————————————— SpringMVC返回Json,自定义Json中Date类型格式 SpringMVC返回Json数据依赖jackson这个开源的第三方类库. 若不加任何说明情况下Date类型将以时间戳的形式转换为Json并返回. jackson提供了一些自定义格式的方法.我们只需继承它的抽象类Json

Json 的日期格式转换成DateTime

JSON 的日期形式:"/Date(1242357713797+0800)/" , 下面我们就用以下C#的方法将他转换成DateTime类型: /// <summary> /// Json 的日期格式与.Net DateTime类型的转换/// </summary> /// <param name="jsonDate">Json 的日期,例如:/Date(928120800000+0800)/</param> ///

struts2 json 输出日期格式不正确

struts2 输出json中 日期出现:2013-12-17T15:57:47 错误格式的数据 原因:struts2 json插件对日期的格式化有问题 解决方法:在实体类的日期的get方法上加注解:@JSON(format="yy-MM-dd HH:mm:ss") 例如: @JSON(format = "yy-MM-dd HH:mm:ss") public Date getFindtime() { return findtime; }

配置SpringMVC返回JSON遇到的坑

坑一:官方网站下载地址不明朗,最后找了几个下载地址:http://wiki.fasterxml.com/JacksonDownload Jackson2.5下载地址:jackson2.5.0.jar 坑二:配置文件的配置信息跟jackson的版本有关. 版本一: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 版本二:org.springframework.http.converter.json

SpringMVC返回json数据的三种方式

SpringMVC返回json数据的三种方式:http://blog.csdn.net/shan9liang/article/details/42181345 上述第三种方法:可能会出现这个jar包没有的情况,引入即可,下面pom引入即可 java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException

SpringMVC 返回JSON和JSP页面xml配置

SpringMVC 返回JSON和JSP页面xml配置 代码1: <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> <!-- Enables the Spring MVC @Controller programming model --> <annotation-driven /> <!-- Handles HTTP GET re