デフォルトでJSON-Java変換にJacksonを使用するSpring MVC 3.1を使用しています。
次のカスタム変換を作成する必要があります。
- java.util.List (あらゆる種類の異なるタイプ用)。
- 列挙型から文字列へ
- java.util.Calendar
カスタム コンバーターを作成するためのいくつかの異なるアプローチに遭遇しました。
ここで多かれ少なかれ説明されているように、カスタム ObjectMapper を作成します。
public class CustomObjectMapper は ObjectMapper を拡張します...
次に、MappingJacksonHttpMessageConverter をサーブレット コンテキストに追加し、それをカスタム ObjectMapper に登録します。
次に、カスタム objectMapper にいくつかの特定の実装が必要だと思います (どのように見えるべきですか?)。
- 2 番目のアプローチでは、FormattingConversionServiceFactoryBean を拡張し、ここで説明するように独自のコンバーター (org.springframework.core.convert.converter.Converter を実装するクラス) を作成します。
更新 1: 私が見た別のアプローチは、ここで説明されているように、MappingJacksonHttpMessageConverter をサブカル化し、getJavaType メソッドをオーバーライドすることです。これを行うには、カスタム コンバーターをコンバーターのリストに追加する必要があります。
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="com.yl.app.CustomMappingJacksonHttpMessageConverter">
</list>
</property>
どのアプローチが推奨されますか? これらは唯一のものですか、それを行うより良い方法はありますか?
更新 2:
まだわかりません。実際には、クラス A とクラス B があるとします。
クラス A は B のリストを保持します。
public class A {
public List<B> list;
}
タイプ A のオブジェクトをクライアントに返したいと思います。@ResponseBody アノテーションを追加する以外に、サーバーで何をすべきですか (この場合、私が得る限り十分ではありません)。