程序员

008.使用Jackson处理日期问题

2017-07-20  本文已影响0人  胖先森

SpringMVC关于使用Jackson处理日期问题

没有摘录网络上的写法,针对于现在已经学过的进行一下简单的总结

1. 新建持久化类UserInfo.java

public class UserInfo {
    private String user_name;
    private String account;
    private Date create_date;
    //省略了getter和setter方法
}

2.通过@ResponseBody注解处理返回数据

mvc:annotation-driven默认加载了json转换器,我们添加了上面的依赖包后就可以使用注解@ResponseBody来返回json数据,

@Controller
public class JsonController {
    @GetMapping("/json01")
    @ResponseBody
    public UserInfo json01(UserInfo userInfo) throws ParseException{
        userInfo.setAccount("wukong");
        userInfo.setUser_name("悟空");
        userInfo.setCreate_date(new java.util.Date());//当前时间
        return userInfo;
    }
}

3.使用内置的日期格式化工具

同样是全局设置json响应的日期格式,但此方法可以和@JsonFormat共存,也就是说可以全局设置一个格式,特定的需求可以使用注解设置。

    <!-- 1.启动SpringMVC注解 -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!-- 优先使用该媒体类型,为了解决IE浏览器下,返回JSON数据的下载问题 -->
                        <value>text/html;charset=UTF-8</value>
                        <value>text/json;charset=UTF-8</value>
                        <value>application/json;charset=UTF-8</value>
                    </list>
                </property>
                <!-- 使用内置日期工具进行处理 -->
                <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>

运行结果图如下

运行的结果图

4.使用@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

在实体类的属性或者getter方法上面添加@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 就可以将json的日期格式化。

① 改造一下代码如下

@Controller
public class JsonController {

    @GetMapping("/json01")
    @ResponseBody
    public UserInfo json01(UserInfo userInfo) throws ParseException{
        userInfo.setAccount("wukong");
        userInfo.setUser_name("悟空");
        String date = "2017-07-09";
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        userInfo.setCreate_date(df.parse(date));
        return userInfo;
    }

}

②运行效果如下

这样的效果不是我想要的,那么可以结合注解完成对日期的处理,

③改造UserInfo.java处理

package com.shxt.model;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

public class UserInfo {

    private String user_name;
    private String account;

    private Date create_date;
    public String getUser_name() {
        return this.user_name;
    }
    public void setUser_name( String user_name ) {
        this.user_name = user_name;
    }
    public String getAccount() {
        return this.account;
    }
    public void setAccount( String account ) {
        this.account = account;
    }
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    public Date getCreate_date() {
        return this.create_date;
    }
    public void setCreate_date( Date create_date ) {
        this.create_date = create_date;
    }
    @Override
    public String toString() {
        return "UserInfo [user_name=" + this.user_name + ", account=" + this.account + ", create_date="
                + this.create_date + "]";
    }


}

上一篇下一篇

猜你喜欢

热点阅读