vscode中json字符串粘贴后乱码或单行,需先切换语言模式为json,再用shift+alt+f(win/linux)或shift+option+f(macos)格式化;若无效,检查语法错误、格式化器配置或改用jq等外部工具。

JSON字符串粘贴后直接变乱码或单行?
VSCode默认不会自动格式化剪贴板里的JSON字符串,尤其是从浏览器控制台、日志或邮件里复制过来的{"name":"alice","scores":[95,87]}这种没换行没缩进的文本。它会原样塞进编辑器,看着像一坨密文。
解决方法很简单:选中整段JSON(快捷键 Ctrl+A 或 Cmd+A),然后按 Shift+Alt+F(Windows/Linux)或 Shift+Option+F(macOS)。前提是当前文件语言模式是JSON——如果右下角显示的是Plain Text,先点它,选JSON。
- 别用
Ctrl+Shift+I,那是开发者工具快捷键,VSCode里无效 - 如果按了没反应,大概率是语言模式不对,或者装了冲突的格式化插件(比如Prettier没配JSON支持)
- 临时切语言模式比改文件后缀更快:快捷键
Ctrl+K M→ 输入json回车
JSON内容混在JavaScript/HTML里怎么单独格式化?
比如你复制了一段fetch响应体:response.json() // {"user":{"id":1,"tags":["admin","beta"]}},直接选中整个字符串再格式化会失败——VSCode识别为JS代码,不是纯JSON。
得先把JSON部分“抠出来”:双击字符串内容(注意别点到引号外),按Ctrl+Shift+P(命令面板),输入Format Document,但要先确保此时光标在被选中的字符串内部,且语言模式已手动切为JSON。
- 更稳的办法:复制JSON字符串 → 新建空白文件 → 粘贴 →
Ctrl+K M→ 选JSON→Shift+Alt+F - 别试图用正则替换加换行,容易把字段值里的
\n也误处理 - 如果JSON里有注释(如
// todo),VSCode原生JSON格式化会报错Unexpected token / in JSON,必须删掉注释再操作
为什么有时Shift+Alt+F没反应,或格式化后缩进错乱?
常见原因就两个:格式化器没启用,或者配置项冲突。VSCode本身不带JSON格式化引擎,依赖内置的jsonc支持或第三方插件(如Prettier)。
检查路径:Settings → Text Editor → Formatting → Format On Save关掉它,避免保存时意外覆盖;重点看Default Formatter for JSON是否设为vscode.json-language-features(推荐)。
- 如果用了Prettier,确认其配置里
"json.enable": true已开启,否则它会跳过JSON文件 - 缩进异常(比如全用空格但显示4格,实际想2格):查
editor.tabSize设置,JSON格式化器会尊重这个值,而不是自己定 - 遇到
Failed to format document错误,八成是JSON语法不合法,用Ctrl+Shift+P → JSON: Validate快速定位哪一行少了个逗号或引号
超大JSON文件(>10MB)卡死或崩溃?
VSCode对大文件的语法高亮和格式化是懒加载的,但Shift+Alt+F会尝试解析整棵树,内存扛不住就会无响应甚至退出。
绕过去的方法:终端里用jq命令行工具,不依赖编辑器。先确认已安装jq(macOS用brew install jq,Windows用choco install jq),然后在文件所在目录运行:
jq '.' input.json > formatted.json
这比VSCode快得多,也更稳。
- 如果连
jq都不想装,浏览器也能救急:打开data:text/html,<script>document.write(JSON.stringify(JSON.parse(prompt()),null,2))</script>,粘贴JSON进去回车 - VSCode里打开大JSON前,建议先禁用所有非必要插件,特别是那些带“JSON Schema”“Auto-complete”的,它们会在后台偷偷解析
- 别用
Format Selection去处理大JSON片段——它照样会尝试完整解析上下文,和全选没区别
Shift+Alt+F也没用。











