SpringBoot 返回纯字符串的时候,多了双引号的问题解决

做项目遇到奇怪的合作方要求返回纯字符串报文的,但是我们项目默认返回的报文格式都是json格式的,返回纯字符串格式的报文会出现字符串外面又包了双引号的情况。比如本来是要返回字符串SUCCESS的,得到的返回结果却是"SUCCESS"。

 

百度了下,下面这篇博文给了我启发

https://blog.csdn.net/baidu_27055141/article/details/91544019

突破口在 configureMessageConverters 这个方法,这个方法配置了工程使用的消息转换器。在全工程内搜索configureMessageConverters果然在WebConfig 找到了配置的地方。

	@Override
	public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    	
    	List<MediaType> list = new ArrayList<MediaType>();
        //设置转换器支持的消息类型,这里支持的是json
    	list.add(MediaType.APPLICATION_JSON_UTF8);
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
    	mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
    	
        //添加工程使用的消息转换器
        converters.add(mappingJackson2HttpMessageConverter);
		super.configureMessageConverters(converters);
	}

按照上面注释以及上面链接的博文的说法,只需要注册一个纯字符串类型消息的转换器,并把这个转换器加入到工程内就行了。增加以下代码

	
    @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);
	}

到这里还没结束,还需要在请求接口上加上产生的消息类型注解 produces = "text/plain", 这样消息才会与对应的转换器对应上处理。


    @PostMapping(value = "/xxxPath",produces = "text/plain")
    public  String xxxMethod(@RequestBody ZZZ zzz)  {

    }

最后输出终于不带双引号了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值