Json反序列化日期不起作用

时间:2016-03-30 19:48:45

标签: java json date

在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);
        }
    }

出了什么问题?     }

1 个答案:

答案 0 :(得分:1)

您没有正确解析日期。现在你收到一个以毫秒为单位的日期,所以你首先要在格式化之前创建一个日期,即:

Object

或者,如果您只想从中创建Date对象,只需跳过格式部分。