springMVC返回的json日期為Long的格式化
阿新 • • 發佈:2017-09-07
angle 評論 tle 想要 ron serialize contex 7月10日 tac
springMVC返回的json日期為Long的格式化
標簽: spring mvcjson格式化mybatis時間 2015-10-30 14:48 1467人閱讀 評論(0) 收藏 舉報 分類: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的格式化