当前位置: 首页 > article >正文

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

问题描述

chrome游览器又一款JSON插件叫JSON Formatter,游览器GET请求调用接口时,如果返回的数据是json格式,则会自动格式化展示,类似这样:
https://www.chengpei.top/upload/thumbnails/2025/w800/jsonview.png
但是今天突然发现怎么也格式化不了,打开一个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才对,这里一定是哪里出了问题才会有变化,经过排查发现在公司的依赖库里找到这么个类
https://www.chengpei.top/upload/webconfig.png
其中46行添加了一个FastJson的消息转换器,而且没有设置setSupportedMediaType属性,这里默认指是*/*,导致了后续返回数据时出了问题。

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

converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON_UTF8));

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


http://www.kler.cn/a/516310.html

相关文章:

  • Linux进度条实现
  • 【Day23 LeetCode】贪心算法题
  • 【LLM】RedisSearch 向量相似性搜索在 SpringBoot 中的实现
  • 【2024年华为OD机试】(A卷,200分)- 优雅子数组 (JavaScriptJava PythonC/C++)
  • Javascript IndexedDB(Dexie.js) React 存储大量(5-50M)的完整示例
  • 规模化指令微调的语言模型
  • 谷歌(Google) Pixel 8/9 Pro(xl)如何获取 root 权限
  • 23. C语言 文件操作详解
  • GS-SLAM论文阅读--SplatMAP
  • SpringBoot使用MockMVC通过http请求controller控制器调用测试
  • leetcode_链表 21.合并两个有序链表
  • Github 2025-01-23 Go开源项目日报 Top10
  • 【29】Word:李楠-学术期刊❗
  • GPSd定时检测保活TCP GPS源
  • React 路由导航与传参详解
  • 力扣hot100-->滑动窗口、贪心
  • Vue入门(Vue基本语法、axios、组件、事件分发)
  • Python自带模块实现屏幕像素高效操作
  • VUE对接deepseekAPI调用
  • 【LeetCode 刷题】二叉树-深度优先遍历