spring MVC で REST Web サービスを開発しています。jackson 2 が mongodb オブジェクト ID をシリアル化する方法を変更する必要があります。jackson 2 の部分的なドキュメントを見つけたので、何をすべきかわかりません。私がしたことは、カスタムシリアライザーを作成することでした:
public class ObjectIdSerializer extends JsonSerializer<ObjectId> {
@Override
public void serialize(ObjectId value, JsonGenerator jsonGen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
jsonGen.writeString(value.toString());
}
}
ObjectMapper を作成する
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
SimpleModule module = new SimpleModule("ObjectIdmodule");
module.addSerializer(ObjectId.class, new ObjectIdSerializer());
this.registerModule(module);
}
}
次に、マッパーを登録します
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="my.package.CustomObjectMapper"></bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
私の CustomConverter は呼び出されません。CustomObjectMapper の定義が間違っていると思います。jackson 1.x のコードから適応させました。
私のコントローラーでは、@ResponseBody を使用しています。私はどこで間違っていますか?ありがとう