jackson 변환기에 새로운 유형을 추가하려고합니다. 사용자 정의 유형이지만 실제로는 json이고 표준 객체 매퍼는 java 객체로 변환해야합니다.Mapping2JacksonHttpMessageConverter에 새로운 미디어 유형을 추가하십시오.
내가 노력하고 다음과 같은 : 내가 시작하고 지원되는 유형의 목록을 살펴에서 응용 프로그램을 디버깅 할 때
@Bean
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter()
{
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
MediaType fhir = new MediaType("application", "json+fhir");
List<MediaType> jacksonTypes = new ArrayList<>(converter.getSupportedMediaTypes());
jacksonTypes.add(fhir);
converter.setSupportedMediaTypes(jacksonTypes);
return converter;
}
내가 거기에 fhir 미디어 타입을 볼 수 있지만 난 여전히 같은 오류가 발생합니다 :
Could not extract response: no suitable HttpMessageConverter found for response type [class MyClass] and content type [application/json+fhir]
이 사용자 지정 형식을 사용하려면 메시지 변환기를 얻는 데 도움이 필요합니다.
@Bean
RestTemplate restTemplate()
{
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
messageConverters.add(mappingJackson2HttpMessageConverter());
return restTemplate;
}
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter()
{
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
converter.setObjectMapper(objectMapper);
MediaType fhir = new MediaType("application", "json+fhir");
List<MediaType> jacksonTypes = new ArrayList<>(converter.getSupportedMediaTypes());
jacksonTypes.add(fhir);
converter.setSupportedMediaTypes(jacksonTypes);
return converter;
}
* 참고 * 다음 형식의 구문은 json'는 '이며,이'fhir'는 의미를 나타내는 경우 그것의 미디어 타입은 (기본적으로'application/* + json'을 지원하기 때문에)'MappingJackson2HttpMessageConverter'에 의해 지원되는'application/hfir + json'이어야합니다. – pozs
유형의 arraylist를 디버깅 할 때 지원되는 유형을 볼 수 있습니다. 그래서 기본적으로 아무것도하지 않고도 괜찮아 질 것입니다. – berimbolo
예. 그러나 OFC를 사용하려면 변환기를 등록해야합니다 (@ StanislavL은 유효한 포인트를 발생시킵니다). – pozs