类型有很多,这里只用日期为例说明。
在Spring MVC中存在两大类的类型转换,一类是Json,一个是Spring的Binder转换。
Spring MVC+Spring3+Hibernate4开发环境搭建
JSON:
使用Json转换时,可以如下使用:
public class Test {
private Date createdate;
@JsonSerialize(using = DateYMDHMSJsonSerializer.class)
public Date getCreatedate() {
return createdate;
}
@JsonDeserialize(using = DateYMDHMSJsonDeserializer.class)
public void setCreatedate(Date createdate) {
this.createdate = createdate;
}
}
可以看到这里使用了两个Json转换的注解:
第一个@JsonSerialize是转换为字符串,主要是后台传递给前台时的日期格式;
第二个@JsonDeserialize是转换字符串为日期类型,主要是从前台往后台传递时的日期。
两个具体转换类的实现:
/**
* Description: 日期转换 - "yyyy-MM-dd HH:mm:ss"
* Author: liuzh
* Update: liuzh(2014-04-17 10:59)
*/
public class DateYMDHMSJsonSerializer extends JsonSerializer<Date>{
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
try {
jsonGenerator.writeString(DateUtil.formatDate(date, DateUtil.DATE_FORMAT_TIME_T));
} catch (BusinessException e) {
jsonGenerator.writeString(String.valueOf(date.getTime()));
}
}
}
/**
* Description: 日期转换 - "yyyy-MM-dd HH:mm:ss"
* Author: liuzh
* Update: liuzh(2014-04-17 10:59)
*/
public class DateYMDHMSJsonDeserializer extends JsonDeserializer<Date> {
@Override
public Date deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
try {
return DateUtil.formatStringToDate(jp.getText(), DateUtil.DATE_FORMAT_TIME_T);
} catch (BusinessException e) {
return new Date(jp.getLongValue());
}
}
}
其中DateUtil是一个对日期格式转换的工具类,使用的SimpleDateFormat进行转换。