在Json列表中,我得到了这样的日期:" lastModifiedDate":1459202400000"。序列化和反序列化它们似乎没问题。
实体类:
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.hibernate.validator.constraints.Email;
@Data
@ToString
@Entity
public class UserEntity implements Serializable {
@JsonSerialize(using=JsonDateSerializer.class)
@JsonDeserialize(using=JsonDateDeserializer.class)
@Column(name = "LastModifiedDate", columnDefinition="DATETIME", nullable = true, insertable = true, updatable = true)
private java.util.Date lastModifiedDate;
}
反序列化程序类:
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.springframework.stereotype.Component;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.*;
@Component
public class JsonDateDeserializer extends JsonDeserializer<Date> {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
try {
return dateFormat.parse(jsonParser.getText());
} catch (Exception e) {
throw new JsonParseException("Could not parse date", jsonParser.getCurrentLocation(), e);
}
}
出了什么问题? }
答案 0 :(得分:1)
您没有正确解析日期。现在你收到一个以毫秒为单位的日期,所以你首先要在格式化之前创建一个日期,即:
Object
或者,如果您只想从中创建Date对象,只需跳过格式部分。