springmvc时间反序列化

来源:互联网 发布:哈布斯堡的灭亡知乎 编辑:程序博客网 时间:2024/06/10 21:45

在springmvc中是可以将对象作为参数直接从前台传递到后台的,但是在传递过程中,由于选择的json插件不同,对于时间的格式支持会出现差异,也就会导致@DateTimeFormat(pattern = "yyyy-MM-dd")  这种方式失去效用。下面展示一个简单的例子用来弥补这种问题。


package com.eshop.bargin.util;

 import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.DeserializationContext;
import org.codehaus.jackson.map.JsonDeserializer;
  
/**
 * 
 * Description: TODO json时间格式反序列化. 
 * date: 2016-9-29 上午11:12:03 
 * @author zqn
 */
public class CustomDateDeserializer extends JsonDeserializer<Date> {  
  
    @Override
    public Date deserialize(JsonParser jp, DeserializationContext ctxt) 
      throws IOException, JsonProcessingException {
        JsonNode node = jp.getCodec().readTree(jp);
        String date=node.getTextValue();
        Date fimDate=null;
        try{
        fimDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
        }catch(ParseException e){
        e.printStackTrace();
        }
        return fimDate;
    }
}



//在实体类中添加的注解
@JsonDeserialize(using = CustomDateDeserializer.class) 
    public void setExpectReceiptTime(Date expectReceiptTime) {
        this.expectReceiptTime = expectReceiptTime;

    }

这种是最简单的方式,还可以根据自己的要求做一些扩展。

0 0
原创粉丝点击