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"))
将json请求传递给POJO类中的REST控制器方法。用户应仅以以下datetime格式输入,否则应抛出message。为什么DateSerializer未调用?
add(@Valid @RequestBody User user) { }
json:
{ "name":"ssss", "created_date": "2012-07-21 12:11:12" }
pojo类变量
@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)); }
我有同样的问题,所以我写了一个自定义日期反序列化 @JsonDeserialize(using=CustomerDateAndTimeDeserialize.class)
@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); } }