JSON Serializing date in a custom format (Can not construct instance of java.util.Date from String value)
fasterxml, jackson, json, spring-mvc
Solution
I have the same problem, so I write a custom date deserialization with `@JsonDeserialize(using=CustomerDateAndTimeDeserialize.class)`
public class CustomerDateAndTimeDeserialize extends JsonDeserializer<Date> {
private SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
@Override
public Date deserialize(JsonParser paramJsonParser,
DeserializationContext paramDeserializationContext)
throws IOException, JsonProcessingException {
String str = paramJsonParser.getText().trim();
try {
return dateFormat.parse(str);
} catch (ParseException e) {
// Handle exception here
}
return paramDeserializationContext.parseDate(str);
}
}
Problem
``` could not read JSON: Can not construct instance of java.util.Date from String value '2012-07-21 12:11:12': not a valid representation("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) ``` passing json request to REST controller method in a POJO class.user should enter only in below datetime format other wise it should throw message.why DateSerializer is not calling? ``` add(@Valid @RequestBody User user) { } ``` json: ``` { "name":"ssss", "created_date": "2012-07-21 12:11:12" } ``` pojo class variable ``` @JsonSerialize(using=DateSerializer.class) @Column @NotNull(message="Please enter a date") @Temporal(value=TemporalType.TIMESTAMP) private Date created_date; public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { logger.info("serialize:"+value); DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); logger.info("DateSerializer formatter:"+formatter.format(value)); jgen.writeString(formatter.format(value)); } ```