json viewer插件仅提供树状预览,不支持格式化;真正格式化需依赖vscode.json-language-features(内置)、prettier(需配置)或jq命令行工具。

VSCode 里 JSON Viewer 插件根本不能格式化 JSON
JSON Viewer(比如 mechatroner.rainbow-csv 或旧版 quicktype.quicktype 带的预览功能)只是把 JSON 渲染成树状结构、支持折叠和点击展开,它不参与任何格式化逻辑——按 Shift+Alt+F 没反应?不是插件没装好,是它压根没这个能力。
真正负责格式化的,只有三类东西:vscode.json-language-features(内置)、Prettier(需手动配 parser)、或命令行 jq。装了 JSON Viewer 却还指望它“美化缩进”,等于让 PDF 阅读器帮你重排 Word 文档。
- JSON Viewer 类插件只做一件事:把
{"a":1,"b":[{}]}变成可交互的层级视图,不改字符串内容 - 想格式化,必须依赖语言模式为
JSON+ 启用格式化器(默认是vscode.json-language-features) - 如果右下角显示的是
JSON with Comments,Shift+Alt+F会直接失效——标准 JSON 不允许//注释
按 Shift+Alt+F 没反应?先看右下角语言模式和 defaultFormatter
VS Code 1.85+ 默认禁用了旧式 JSON 格式化入口,转而依赖 vscode.json-language-features 扩展(已内置,但可能被覆盖)。你按快捷键没反应,90% 是这两处卡住了。
- 点右下角语言模式(如显示
Plain Text或JavaScript),手动选JSON - 打开设置(
Ctrl+,),搜defaultFormatter,展开 “JSON” 语言专属设置,确认值是vscode.json-language-features - 如果之前设过全局
editor.defaultFormatter为esbenp.prettier-vscode,它会对 JSON 文件格式化失败或乱加单引号——Prettier 的 JSON 支持是有限子集,不是全兼容 - 检查
json.format.enable是否为true(VS Code 设置里搜这个词就能看到)
粘贴过来的 JSON 格式化失败?大概率是脏数据,不是编辑器问题
从浏览器 Network 面板复制响应体、curl 输出、或接口文档里 Ctrl+C 的内容,常带 BOM、HTML 错误页、重定向提示、甚至 JS 注释——这些都不是合法 JSON,JSON.parse() 都会报错,VS Code 当然也格式化不了。
- 先用
curl -v http://api.example.com看原始响应头和 body,确认Content-Type: application/json且 body 开头是{或[ - 用 VS Code 打开文件后,按
Ctrl+Shift+P→ 输入Change Language Mode→ 选JSON,再试Shift+Alt+F - 如果仍报
Unexpected token,把内容粘到 jsonlint.com 验证;或用命令行jq empty快速检测是否合法(echo '{"a":1}' | jq empty返回空即合法) - 清理 BOM 最简单方式:用 VS Code 右下角编码切换(如显示 UTF-8-BOM),点开 → 选 “Save with Encoding” → “UTF-8”
想在 JS 文件里格式化一段 JSON 字符串?别依赖插件自动识别
写 React 或 Node.js 时,硬编码一个长 JSON 字符串在 const data = `{"users":[...]}` 里,想只格式化这个字符串本身——多数插件的 “format JSON in string” 功能在 VS Code 1.85+ 上已不可靠,容易崩溃或错位。
- 最稳做法:把那段 JSON 单独复制出来,新建临时文件,保存为
temp.json,设语言为JSON,按Shift+Alt+F格式化完再复制回去 - 如果必须在原文件操作:选中字符串内容(注意去掉外层反引号/双引号,只留
{...}或[...]),确保它是合法 JSON,再按Shift+Alt+F—— VS Code 的 “Format Selection” 在纯 JSON 片段上表现稳定 - 避免用 Prettier 的
prettier-plugin-jsdoc或其他带 JSON 解析逻辑的插件处理内联字符串,它们对嵌套转义、换行符处理不一致
真正麻烦的从来不是怎么按快捷键,而是你手里的那串字符到底算不算 JSON。验证先行,格式化在后——这点比任何插件都关键。











