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

Jackson Json将日期字符串反序列化为java日期,java,jackson,fasterxml,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.NO

我必须从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);
        }
    }

}
但是我得到了以下错误

   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:?]
有人能告诉我哪里出了问题吗

问候,,
法尔汉

你在哪里使用乔达时间?满了吗?在哪一行发生错误?请尝试使用Jackson java 8模块。
   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:?]