Java 我应该如何在Spring boot中配置httpMessageConverters以将消息转换为所需格式?
我使用Java 我应该如何在Spring boot中配置httpMessageConverters以将消息转换为所需格式?,java,json,spring,spring-boot,protocol-buffers,Java,Json,Spring,Spring Boot,Protocol Buffers,我使用springboot编写了一个api服务,它以googleprotobuf格式为请求提供服务。我的要求是,每当用户使用accept header作为application json format点击我的服务时,我希望使用proto buf java format(用于将json字符串与proto对象进行转换的库)将呈现的proto对象转换为json格式。现在发生的事情是,每当用户点击application/x-protobuf格式时,spring使用protobufHTTPMessageC
springboot
编写了一个api服务,它以googleprotobuf
格式为请求提供服务。我的要求是,每当用户使用accept header作为application json format
点击我的服务时,我希望使用proto buf java format
(用于将json
字符串与proto对象进行转换的库)将呈现的proto对象转换为json
格式。现在发生的事情是,每当用户点击application/x-protobuf
格式时,spring使用protobufHTTPMessageConverter
转换为所需格式,但当用户点击Json格式时,spring boot使用默认的jacksonapper
,无法转换为JsonString
。我不熟悉springboot
,我需要配置消息转换器以服务JSON
格式的解决方案 尝试在下面添加类。假设您保持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);
}
}
@EnableWebMvc
@配置
公共类CustomConfig扩展WebMVCConfigureAdapter
{
@凌驾
公共无效配置MessageConverters(列表)您是否尝试复制一些基本教程,例如?如果您遇到问题,请提供一些代码、运行时错误消息…谢谢我忘记在pom.xml中添加Protobuf Java格式的依赖项。您是否知道维护此库的人员。此库是否适合用于将protos转换为Json。您将找到此libr所有者的姓名和电子邮件在您链接的页面的底部显示。