springMVC返回的json日期为Long的格式化

来源:互联网 发布:网络歌唱大赛 编辑:程序博客网 时间:2024/06/04 18:19

springMVC+myBatis查询数据,得到date类型数据,返回json日期为Long数字(毫秒数)的日期格式化方案:
1、springMVC配置文件统一返回格式:

<mvc:annotation-driven>      <!-- 处理responseBody 里面日期类型 -->          <mvc:message-converters>              <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">                  <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>

2、jackson 注解处理

@JsonFormat  :        此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")private Date createtime;@JsonIgnoreProperties :          此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。  @JsonIgnore  :         此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。 @JsonSerialize   // 反序列化一个固定格式的Date        @JsonDeserialize(using = CustomDateDeserialize.class)        public void setBirthday(Date birthday) {            this.birthday = birthday;        }    // 序列化指定格式的double格式        @JsonSerialize(using = CustomDoubleSerialize.class)        public double getSalary() {            return salary;        }    自定义一个格式化类:public class CustomDateDeserialize extends JsonDeserializer<Date> {        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        @Override        public Date deserialize(JsonParser jp, DeserializationContext ctxt)                throws IOException, JsonProcessingException {            Date date = null;            try {                date = sdf.parse(jp.getText());            } catch (ParseException e) {                e.printStackTrace();            }            return date;        }    }    

3、自定义注解

import java.io.IOException;  import java.text.SimpleDateFormat;  import java.util.Date;  import com.fasterxml.jackson.core.JsonGenerator;  import com.fasterxml.jackson.core.JsonProcessingException;  import com.fasterxml.jackson.databind.JsonSerializer;  import com.fasterxml.jackson.databind.SerializerProvider;  /**   * ClassName:DateJsonSerializer <br/>   * Function: 日期类型格式化,格式化为:yyyy-MM-dd HH:mm:ss 格式. 用法如下:<br/>   * Reason:   @JsonSerialize(using=DateJsonSerializer.class)  *           @Column(name="BIRTHDAY")  *           public Date getBirthday() {  *              return birthday;  *           }  *          . <br/>   * Date:     2014年7月10日 下午1:26:08 <br/>   * @author   zhangzhaoyu   * @version   1.0  * @since    JDK 1.7   * @see         */  public class DateJsonSerializer extends JsonSerializer<Date> {      @Override      public void serialize(Date value, JsonGenerator jgen,              SerializerProvider provider) throws IOException,              JsonProcessingException {           SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");           String formattedDate = formatter.format(value);           jgen.writeString(formattedDate);      }  }  
0 0
原创粉丝点击