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 をミリ秒にシリアライズする場合、再度デシリアライズできるはずです..私は本当にこれのためにカスタムデシリアライザーを書きたくありません..

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 に答える