问题描述
在SpringBoot项目中,直接返回字符串的api接口,返回的字符串外会有额外增加的""双引号。
原因分析:
主要是因为在返回的字符串不是json格式,同时又被默认org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 处理,所以就导致了双引号。
假如返回的字符串为ABC,在json格式下为"\"ABC\"",此时为转义格式""ABC"",
被去掉一层双引号后,最后返回的值是"ABC"。
解决方案:
(1)第一种方案:直接去掉字符串中的双引号:
public static String removeDoubleQuotes(String result) {
//去掉双引号
return result.replace("\"", "");
}
(2)第二种方案:百度得到的第二种
<1>注册一个纯字符串类型消息的转换器,并把这个转换器加入到工程内
@Bean
public StringHttpMessageConverter stringHttpMessageConverter() {
return new StringHttpMessageConverter();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
//字符串转换器
List<MediaType> listString = new ArrayList<MediaType>();
//字符串的消息类型为text/plain
listString.add(MediaType.TEXT_PLAIN);
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
stringHttpMessageConverter.setSupportedMediaTypes(listString);
//json转换器
List<MediaType> list = new ArrayList<MediaType>();
list.add(MediaType.APPLICATION_JSON_UTF8);
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
converters.add(mappingJackson2HttpMessageConverter);
converters.add(stringHttpMessageConverter);
super.configureMessageConverters(converters);
}
<2>还需要在请求接口上加上产生的消息类型注解 produces = “text/plain”。
@PostMapping(value = "/xxxPath",produces = "text/plain")
public String xxxMethod(@RequestBody XXX xxx) {
}
注:博主认为第一种更简便呢!!!
╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯