我应该如何在Spring启动时配置httpMessageConverters以将消息转换为所需的格式?

时间:2016-04-27 11:10:16

标签: java json spring spring-boot protocol-buffers

我使用Spring Boot编写了一个api服务,该服务以Google ProtoBuf格式提供请求。我的要求是,当用户点击我的服务时,接受标题为application-json format我希望使用JSON将呈现的原型对象转换为proto-buf-java Format格式(用于将JSON个字符串转换为并从proto Objects)。现在发生的是当用户点击application/x-protobuf格式时,spring使用protobufHTTPMessageConverter转换为所需格式,但是当用户点击Json格式时,spring boot使用默认JacksonMapper并且它无法&# 39;无法转换为JsonString。我是Spring Boot的新用户,我需要解决方案来配置邮件转换器以提供JSON格式。

1 个答案:

答案 0 :(得分:0)

尝试添加以下课程。假设你打开了AutoScan,SpringBoot应该扫描它。根据您的API请求,默认情况下将对象序列化为JSON,或者只需添加& mediaType = json即可。

@EnableWebMvc
@Configuration
public class CustomConfig extends WebMvcConfigurerAdapter
{
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters)
    {
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        mappingJackson2HttpMessageConverter.setPrettyPrint(true);
        mappingJackson2HttpMessageConverter.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
        converters.add(mappingJackson2HttpMessageConverter);
    }

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer)
    {
        configurer.defaultContentType(MediaType.APPLICATION_JSON);
        configurer.favorPathExtension(false);
        configurer.favorParameter(true);
        configurer.ignoreAcceptHeader(true);
        configurer.useJaf(false);
        configurer.parameterName("mediaType");
        configurer.mediaType("json", MediaType.APPLICATION_JSON);
    }
}