zoukankan      html  css  js  c++  java
  • jackson @ResponseBody 处理日期类型的字段

    前言:以前只知道一种方式(@JsonFormat)来处理日期格式问题,今天才发现还有两种方式,并且可以全局设置格式,这里记录一下。

    首先,pom.xml 中需要先引入如下 jackson 的依赖:

         <!--支持@ResponseBody 返回json-->
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.9.5</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.9.5</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.5</version>
            </dependency>

    下面则是遇到日期类型(java.util.Date)类型时做日期格式转换:

    方式一、@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 

      在实体类上的字段上加这个注解即可。

      比较方便,也比较独立,不过每个 date 类型的字段都要加,也挺繁琐的。

        @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date updateTime;

    方式二、spring-mvc.xml 中全局设置日期格式(使用内置的日期格式化工具),并且可以同时使用 @JsonFormat 来设置特定的日期格式,@JsonFormat 优先级高于 spring-mvc.xml 中的设置

      spring-mvc.xml 中的配置:

        <mvc:annotation-driven>
            <mvc:message-converters register-defaults="true">
                <!-- 将Jackson2HttpMessageConverter的默认格式化输出设为true -->
                <!--支持@ResponseBody 返回json-->
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="prettyPrint" value="true"/>
                    <!-- 兼容ie -->
                    <property name="supportedMediaTypes">
                        <list>
                            <value>application/json</value>
                            <value>text/json</value>
                        </list>
                    </property>
    
                    <!--是全局设置json响应的日期格式,但此方法可以和@JsonFormat共存,也就是说可以全局设置一个格式,特定的需求可以使用注解设置。-->
                    <property name="objectMapper">
                        <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                            <property name="dateFormat">
                                <bean class="java.text.SimpleDateFormat">
                                    <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
                                </bean>
                            </property>
                        </bean>
                    </property>
    
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

      参考 blog:https://www.cnblogs.com/woshimrf/p/5189435.html

  • 相关阅读:
    欧拉计划之题目2:在斐波那契数列中,找出4百万以下的项中值为偶数的项之和。
    MFC非模态对话框的销毁
    MFC:只允许产生一个应用程序实例的具体实现
    从_tiddata看CRT的线程不安全函数
    关于消息循环的深入分析
    MFC:关于MFC窗口对象(CWnd对象)与Window对象(HWND所指对象)的销毁问题
    使用FindFirstFile和FindNextFile对给定目录下所有文件进行广度优先遍历
    工作线程的消息循环与通信
    MFC和设计模式
    _endthreadex与CloseHandle
  • 原文地址:https://www.cnblogs.com/yuxiaole/p/9706746.html
Copyright © 2011-2022 走看看