SpringMVC ResponseBody 日期类型Json 处理

本文介绍了三种在Spring MVC中处理日期格式的方法:全局配置、局部注解处理以及使用Jackson注解进行日期格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:全局处理 

Xml代码  收藏代码
  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>  



方法二:局部注解处理 

Java代码  收藏代码
  1. import java.io.IOException;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Date;  
  4.   
  5. import com.fasterxml.jackson.core.JsonGenerator;  
  6. import com.fasterxml.jackson.core.JsonProcessingException;  
  7. import com.fasterxml.jackson.databind.JsonSerializer;  
  8. import com.fasterxml.jackson.databind.SerializerProvider;  
  9.   
  10. /**  
  11.  * ClassName:DateJsonSerializer <br/>  
  12.  * Function: 日期类型格式化,格式化为:yyyy-MM-dd HH:mm:ss 格式. 用法如下:<br/>  
  13.  * Reason:   @JsonSerialize(using=DateJsonSerializer.class) 
  14.  *           @Column(name="BIRTHDAY") 
  15.  *           public Date getBirthday() { 
  16.  *              return birthday; 
  17.  *           } 
  18.  *          . <br/>  
  19.  * Date:     2014年7月10日 下午1:26:08 <br/>  
  20.  * @author   zhangzhaoyu  
  21.  * @version   1.0 
  22.  * @since    JDK 1.7  
  23.  * @see        
  24.  */  
  25. public class DateJsonSerializer extends JsonSerializer<Date> {  
  26.   
  27.     @Override  
  28.     public void serialize(Date value, JsonGenerator jgen,  
  29.             SerializerProvider provider) throws IOException,  
  30.             JsonProcessingException {  
  31.          SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  32.          String formattedDate = formatter.format(value);  
  33.          jgen.writeString(formattedDate);  
  34.     }  
  35.   
  36. }  


方法三:jackson 注解处理 

Java代码  收藏代码
  1. @JsonIgnoreProperties  
  2.          此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。  
  3.   
  4. @JsonIgnore  
  5.          此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。  
  6.   
  7. @JsonFormat  
  8.         此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")  
  9.   
  10. @JsonSerialize  
  11.   
  12.  // 反序列化一个固定格式的Date    
  13.     @JsonDeserialize(using = CustomDateDeserialize.class)    
  14.     public void setBirthday(Date birthday) {    
  15.         this.birthday = birthday;    
  16.     }   
  17.   
  18.  // 序列化指定格式的double格式    
  19.     @JsonSerialize(using = CustomDoubleSerialize.class)    
  20.     public double getSalary() {    
  21.         return salary;    
  22.     }    
  23.   
  24. public class CustomDateDeserialize extends JsonDeserializer<Date> {    
  25.     
  26.     private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    
  27.     
  28.     @Override    
  29.     public Date deserialize(JsonParser jp, DeserializationContext ctxt)    
  30.             throws IOException, JsonProcessingException {    
  31.     
  32.         Date date = null;    
  33.         try {    
  34.             date = sdf.parse(jp.getText());    
  35.         } catch (ParseException e) {    
  36.             e.printStackTrace();    
  37.         }    
  38.         return date;    
  39.     }    
  40. }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值