springMVC返回的json日期为Long的格式化
分类:
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); } }