Jackson Json将日期字符串反序列化为java日期

时间:2018-05-11 19:55:42

标签: java jackson fasterxml

我必须从json读取日期字符串并将其设置为java对象。

我在变量上使用了以下注释。

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class RequestObject {

    @JsonProperty("doj")
    @JsonDeserialize(using = CustomDateDeserializer.class, as=Date.class)
    private Date doj;

    public Date getDoj() {
        return doj;
    }
    public void setDoj(Date doj) {
        this.doj = doj;
    }
}

以下是我的自定义DateDeserializer。

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; 
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

@SuppressWarnings("serial")
public class CustomDateDeserializer extends JsonDeserializer<Date>{

    @Override
    public Date deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String date = jsonParser.getText();
        try{
            return sdf.parse(date);
        }catch(ParseException e){
            throw new RuntimeException(e);
        }
    }

}

我正在使用邮递员测试这个,下面是我的邮递员请求。

{
    "doj":"2017-12-27"
}

但是我收到以下错误。

   Caused by: java.lang.IllegalArgumentException: Invalid format: "2017-12-27" is too short
        at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945) ~[joda-time-2.9.1.jar:2.9.1]
        at com.exxonmobil.ace.hybris.jaxb.DateAdapter.unmarshal(DateAdapter.java:45) ~[DateAdapter.class:?]
        at com.exxonmobil.ace.hybris.jaxb.DateAdapter.unmarshal(DateAdapter.java:1) ~[DateAdapter.class:?]
        at org.eclipse.persistence.internal.jaxb.XMLJavaTypeConverter.convertDataValueToObjectValue(XMLJavaTypeConverter.java:149) ~[org.eclipse.persistence.moxy-2.6.1.jar:?]

有人可以让我知道我哪里出错了。

此致 尔汉

0 个答案:

没有答案