繁体   English   中英

我应该如何在Spring Boot中配置httpMessageConverters以将消息转换为所需格式?

[英]How should I configure httpMessageConverters in Spring boot to convert messages into required format?

我使用Spring Boot编写了api服务,该服务以Google ProtoBuf格式提供请求。 我的要求是,每当用户使用接受标头作为application-json format我的服务时,我都希望使用proto-buf-java Format (用于将JSON字符串与proto对象之间来回转换的库)将呈现的proto对象转换为JSON格式。 现在发生的事情是,每当用户点击application/x-protobuf格式时,spring都会使用protobufHTTPMessageConverter转换为所需格式,但是当用户点击Json格式时,spring boot使用默认的JacksonMapper ,并且无法将其转换为JsonString 我是Spring Boot新手,我也需要解决方案来配置消息转换器以提供JSON格式。

尝试添加下面的类。 假设您没有打开自动扫描功能,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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM