2

com.fasterxml.jackson.datatype.joda.JodaModule以下を使用して、モジュールを Spring 3.2 および Jackson 2 に正常に登録しました。

<mvc:annotation-driven>
  <mvc:message-converters>
    <bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
      <property name="objectMapper" ref="jacksonObjectMapper" />
    </bean>
  </mvc:message-converters>
</mvc:annotation-driven>
<bean id="jacksonObjectMapper" class="org.mycompany.CustomObjectMapper" />

ただし、結果として、 のシリアル化LocalDateは日付を含む配列になります。つまり、今日の日付は のようになり[2013,3,12]ます。どうすればこれを返すことができ2013-03-12ますか?

4

1 に答える 1

2

を設定するカスタムObjectMapper実装があったためenable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);、これを見落としていました。この機能をオフにすると、期待どおりの結果が得られました。

残念ながら、デフォルトではゲッターを持たないためシリアライズできませんDateTime。プロパティが存在するにもかかわらず、ミリ秒ではなく配列としてもレンダリングされることに驚きましLocalDateTimeた。LocalDateTimeDateTimeMidnight

JodaModule質問に対する私のコメントで説明したように、 (オーバーライドではなく) 独自の実装を作成してこの動作をオーバーライドし、既存の実装とオーバーライドする実装を置き換えるのは非常に簡単です。ただし、一部のクラスはパッケージ プライベート ( com.fasterxml.jackson.datatype.joda) であるため、元の実装と同じパッケージ構造にする必要があることに注意してください。

于 2013-03-12T07:21:40.697 に答える