您的位置:首页 > 编程语言 > Java开发

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

2015-10-30 14:48 671 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息