Timestampのフィールドが定義されているDTOクラスを
org.codehaus.jackson.map.ObjectMapperを使用してDTO→JSONへ変換しているのですが
Timestampの値が"yyyy-MM-dd"のような値ではなく数値となってしまいます。
Timestampの値を指定した形式(日付)に変換して出力したいと考えています。
/** 更新日時 */ @JsonFormat(pattern="yyyy-MM-dd") private Timestamp updatedAt;
上記のような指定をしても効果がないようです。
/** * DTOクラスをJSON文字列に変換 * @param dto * @return */ public static String objectToJson(Object dto) { ObjectMapper mapper = new ObjectMapper(); String json; try { json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(dto); } catch (JsonGenerationException e) { return null; } catch (JsonMappingException e) { return null; } catch (IOException e) { return null; } return json; }
上記が変換をおこっているメソッドです。
以上です。
よろしくお願いいたします。
どのような値がどのように変換されるのでしょうか?例えば今日の日付(2018-04-27)だとどうなりますか?
上記のupdatedAtにnew Timestamp(new Date().getTime())を設定し
DTO->JSONへの変換を行うと
"updatedAt" : 1524793348359
といった値となります。
「@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")」ではどうでしょう?
ご回答ありがとうございます。結果は変わらずでした。
私の環境ではうまく動きました。(jackson-annotations-2.9.5.jar jackson-core-2.9.5.jar jackson-databind-2.9.5.jar)
回答1件
あなたの回答
tips
プレビュー