七叶笔记 » java编程 » springboot 接口返回字符串带引号的问题解决

springboot 接口返回字符串带引号的问题解决

框架版本

springboot 2.2.1.RELEASEfastjson 1.2.78

maven pom.xml parent 和 dependencies

问题

如下代码,返回结果是 "hello world",添加了一个双引号。

排查

不管返回什么的结果,肯定经过MessageConvert进行消息的输出,debug看使用了哪一个MessageConvert

选择MessageConvert的方法是org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor#writeWithMessageConverters(T, org.springframework.core.MethodParameter, org.springframework.http.server.ServletServerHttpRequest, org.springframework.http.server.ServletServerHttpResponse)

关键代码

debug发现我的messageConvert只有一个,是com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter。那肯定是经过FastJson将String 写到输出流。

debug查看FastJsonHttpMessageConverter具体的write 代码 ,可以看到此时输出字符串添加了引号。

方法:com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter#writeInternal

写个fastjson 转化字符串试试,如下结果输出是 "hello world",添加了引号。

问题所在

我配置了FastJsonHttpMessageConverter ,导致只使用FastJsonHttpMessageConverter 进行消息转换。

解决方法

添加StringHttpMessageConverter ,让其转化String。注意顺序,StringHttpMessageConverter 要在FastJsonHttpMessageConverter 之前。

返回数据没有引号了。

参考资料

【Spring】HttpMessageConverter的作用及替换

到此这篇关于springboot 接口返回字符串带引号的问题解决的文章就介绍到这了,更多相关springboot 返回字符串带引号内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章