스프링 MVC에서 REST 웹 서비스를 개발 중입니다. 잭슨 2가 mongodb 오브젝트 ID를 직렬화하는 방법을 변경해야합니다.스프링 3.2 및 잭슨 2 : 사용자 정의 객체 매퍼 추가
public class ObjectIdSerializer extends JsonSerializer<ObjectId> {
@Override
public void serialize(ObjectId value, JsonGenerator jsonGen,
SerializerProvider provider) throws IOException,
JsonProcessingException {
jsonGen.writeString(value.toString());
}
}
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
SimpleModule module = new SimpleModule("ObjectIdmodule");
module.addSerializer(ObjectId.class, new ObjectIdSerializer());
this.registerModule(module);
}
}
을 ObjectMapper를 만든 다음 매퍼를 등록 : 나는 잭슨 2 부분 문서를 발견하기 때문에 무엇을 해야할지 모르겠어요, 제가 한 일은 사용자 지정 serializer를 만드는 것입니다
<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 정의가 잘못되었다고 생각합니다. 잭슨 1.x 용 코드에서 변경했습니다.
내 컨트롤러에서 @ResponseBody를 사용하고 있습니다. 어디에서 잘못 했습니까? 덕분에 내가 이런 짓을 했을까 방법
Serializer 및 등록이 내게 맞아 보이므로 문제는 XML 구성에 있다고 생각합니다. – StaxMan
그래, 제안 주셔서 감사합니다, 나는 파일 주위에 빈 태그가 있습니다. 이제 작동 중입니다 –
alex
참고로 StdSerializer 대신 StdSerializer를 사용하는 것이 좋습니다. http://fasterxml.github.io/jackson-databind/javadoc/2.0.0/com/fasterxml/jackson/databind/ser/std/StdSerializer.html – testing123