1. 程式人生 > >springMVC返回的json日期為Long的格式化

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

angle 評論 tle 想要 ron serialize contex 7月10日 tac

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

標簽: spring mvcjson格式化mybatis時間 技術分享 分類:

springMVC+myBatis查詢數據,得到date類型數據,返回json日期為Long數字(毫秒數)的日期格式化方案:
1、springMVC配置文件統一返回格式:

 1 <mvc:annotation-driven>  
 2     <!-- 處理responseBody 裏面日期類型 -->  
 3         <
mvc:message-converters> 4 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 5 <property name="objectMapper"> 6 <bean class="com.fasterxml.jackson.databind.ObjectMapper"> 7 <
property name="dateFormat"> 8 <bean class="java.text.SimpleDateFormat"> 9 <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /> 10 </bean> 11 </
property> 12 </bean> 13 </property> 14 </bean> 15 </mvc:message-converters> 16 </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);  
    }  
}    

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