0

我们正在尝试将 java.util.Date 对象发送到我们的 REST 资源,但 Jackson 将传入日期的 JSON 字符串反序列化为1348696800000具有值的 Date 163469056-01-01 00:00:00.0。可能是什么问题呢?

我们的 REST 资源:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response create(A a) {
}

POJO:

@XmlRootElement(name = "A")
public class A {
    private Date startDate;
}

JSON:

{ ... "startDate":1348696800000, ... }

如果 Jackson 将 Date 序列化为毫秒,它应该能够再次反序列化它。我真的不想为此编写自定义反序列化器,然后我必须为客户端和服务器端的每个 Date 属性声明..

4

1 回答 1

1

所以我们决定解决这个问题,让我们的客户创建格式化的日期字符串,以使用自定义的方式发送到 REST 服务器

public class JsonDateSerializer extends JsonSerializer<Date> {

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

    @Override
    public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
            throws IOException, JsonProcessingException {

        String formattedDate = dateFormat.format(date);

        gen.writeString(formattedDate);
    }
于 2012-10-01T07:35:51.723 回答