Джексон Джсон десериализует строку даты в дату Java - PullRequest
0 голосов
/ 11 мая 2018

Мне нужно прочитать строку даты из 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:?]

Может кто-нибудь пожалуйстадайте мне знать, где я иду не так.

С уважением, Фархан

...