chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确

问题描述

chrome游览器又一款JSON插件叫JSON Formatter,游览器GET请求调用接口时,如果返回的数据是json格式,则会自动格式化展示,类似这样:

但是今天突然发现怎么也格式化不了,打开一个json文件倒是可以格式化,但是请求接口返回json就是无法格式化

问题原因

反复卸载重装插件都没有解决,所以想到会不是接口返回的数据有问题,排查发现接口返回的Response Headers中content-type是 text/html,这就不对劲了,按理说springboot项目Controller只要用了@RestController注解,返回实体对象的话,content-type应该默认就是application/json才对,这里居然不对

解决方案

既然返回的Content-Type不对,这里最简单的方案

复制代码
@GetMapping(value = "/pageQuery/{apiPostfix}", produces = "application/json;charset=UTF-8")

@GetMapping注解里加上produces属性配置为指定的,实测确实可以解决

但是springboot项目Controller只要用了@RestController注解,返回实体对象的话,content-type应该默认就是application/json才对,这里一定是哪里出了问题才会有变化,经过排查发现在公司的依赖库里找到这么个类

其中46行添加了一个FastJson的消息转换器,而且没有设置setSupportedMediaType属性,这里默认指是*/*,导致了后续返回数据时出了问题。

这里要注意在添加FastJsonHttpMessageConverter时要设置SupportedMediaTypes

复制代码
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON_UTF8));

或者干脆不要用FastJsonHttpMessageConverter了,一般MappingJackson2HttpMessageConverter已经完全够用了,引入这么个消息转换器不知道哪天又出什么BUG

相关推荐
hdsoft_huge8 小时前
SpringBoot系列18:SpringSecurity登录鉴权,JWT无状态Token认证完整流程(生产级落地)
java·spring boot·后端
Csvn8 小时前
页面「穿越」之谜:React 中因 key 值不正确导致的渲染 Bug 排查实战
前端
浅水壁虎8 小时前
前端技术_TypeScript(第一章)
前端
野蛮人6号8 小时前
黑马天机学堂系列问题之选集8本地服务报错
java·spring cloud·黑马程序员·天机学堂·黑马天机学堂
L-影8 小时前
单体项目结构
java·开发语言
hj2862518 小时前
Shell 脚本完整学习笔记
chrome·笔记·学习
wuqingshun3141598 小时前
MySQL 如何解决深度分页问题?
java·mysql·面试
buhuizhiyuci9 小时前
【算法篇】位运算 —— 基础篇
java·数据库·算法
解局易否结局9 小时前
鸿蒙原生开发实战|Native JSON 编解码与高性能数据序列化
华为·json·harmonyos
laboratory agent开发9 小时前
企业AI Agent落地前,先回答四个工程问题
java·前端·人工智能