2

spring(3.1)データRESTでjava.util.Dateを使用しています。人間が読める形式で印刷する日付を取得するにはどうすればよいですか?(例:MM / DD / YYYY)?

@Entity
public class MyEntity{
...

@Column(name="A_DATE_COLUMN")
@DateTimeFormat(iso=ISO.DATE)
private Date aDate;

..getters and setters

}

ただし、エンティティを出力すると(toStringをオーバーライドした後)、常に日付が長くなります。@DateTimeFormatは動作を変更しないようです。また、さまざまなISO形式を試しましたが、どちらも役に立ちませんでした。

"aDate" : 1320130800000

これが、SpringDataRESTのPOMファイルエントリです。

<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-rest-webmvc</artifactId>
            <version>1.0.0.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId></groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>

                <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.1</version>
        </dependency>

どんな助けでも大いに喜ばれます。PS。これがtoStringの実装です

@Override
    public String toString() {
        return getClass().getName() + "{"+
                 "\n\taDate: " + aDate
                                       + "\n}";
    }
4

1 に答える 1

4

Jackson(JSONライブラリのSpringが内部で使用する)が日付をテキストに適切にシリアル化するには、カスタムシリアライザーを作成する必要があるようです。

ゲッターは次のようになります(JsonDateSerializerはカスタムクラスです)

@JsonSerialize(using=JsonDateSerializer.class) 
public Date getDate() {     
   return date; 
} 

シリアライザーのコードを含むこのブログ投稿をチェックしてください。シリアライザーコードはここに複製されていますが、ブログ投稿の説明が役立つ場合があります。

/**
 * Used to serialize Java.util.Date, which is not a common JSON
 * type, so we have to create a custom serialize method;.
 */
@Component
public class JsonDateSerializer extends JsonSerializer<Date>{

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

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

        String formattedDate = dateFormat.format(date);

        gen.writeString(formattedDate);
    }
}
于 2013-01-14T17:12:53.813 に答える