vscode打开json文件乱码是因编码识别错误,需右下角选reopen with encoding→utf-8;格式化失效因语言模式非json,应设为json而非plain text或jsonc;验证报错定位不准时查看行号旁小红点;prettier处理json易出错,建议禁用其json支持。

VSCode 打开 JSON 文件后显示乱码或无法编辑
常见现象是双击打开 .json 文件后内容全变成方块、问号,或编辑时输入中文直接变空格。这不是文件损坏,而是 VSCode 默认没正确识别编码,尤其 Windows 上用记事本保存的 UTF-8 无 BOM 文件最容易中招。
- 右下角状态栏点击当前编码(如
UTF-8或GBK),选Reopen with Encoding→UTF-8 - 如果频繁遇到,可在设置里强制默认:搜索
files.encoding,设为"utf8" - 别依赖记事本保存 JSON —— 它默认用 GBK,且不加 BOM 的 UTF-8 对 VSCode 不友好;换用 VSCode 自己保存,或用 Notepad++ 显式选 UTF-8(带 BOM)
JSON 格式化失效或缩进错乱
按 Shift+Alt+F 没反应,或格式化后所有字段挤成一行,大概率是文件关联或语言模式没对上。VSCode 不是靠后缀判断语言,而是靠右下角显示的 JSON / JSON with Comments 模式。
- 确认右下角显示的是
JSON(不是Plain Text或JSONC);如果不是,点它 →Configure File Association for '.json'→ 选JSON -
JSONC模式允许注释,但默认格式化器(如 Prettier)可能不认,导致跳过格式化;纯配置类 JSON 建议关掉注释,用标准JSON模式 - 检查是否禁用了内置格式化器:设置里搜
json.format.enable,确保为true
JSON 验证失败但看不出哪行错了
VSCode 底部出现红色波浪线 + 提示 Invalid character 或 Property name expected,但光标没准确定位到错误位置,常发生在粘贴外部 JSON、手写遗漏逗号或引号时。
- 把光标移到报错行附近,看左侧行号旁有没有小红点 —— 那才是真实错误位置;VSCode 有时只标出“影响范围”,不是精确字符
- 临时删掉疑似有问题的段落,保存后看错误是否消失;再逐行恢复,比肉眼扫更快
- 启用
json.schemas配置可提升验证精度:比如给package.json绑定官方 Schema,能提示字段名拼错、值类型不符等深层问题
用 Prettier 或 ESLint 格式化 JSON 时冲突
装了 Prettier 插件后,JSON 文件一保存就自动加引号、改换行,甚至把 true 变成 "true" —— 这是因为 Prettier 默认把 JSON 当 JS 处理,而 JSON 规范不允许单引号、尾逗号或未引号键名。
- 在
.prettierrc里加"jsonRecursive": true并确保"parser": "json",或直接禁用 JSON 文件的 Prettier:在设置里搜prettier.disableLanguages,加入"json" - ESLint 对 JSON 无效(它只跑 JS/TS),别指望它校验 JSON 语法;真要 lint,用专门工具如
jsonlint命令行,或插件JSON Tools - VSCode 内置 JSON 支持已足够健壮,除非团队强依赖 Prettier 统一风格,否则没必要额外引入格式化器处理 JSON
JSON 的坑多数不在语法本身,而在编辑器怎么“看待”它 —— 编码、语言模式、格式化器优先级,三者只要一个没对齐,就会表现异常。调的时候盯住右下角那几个小字,比翻文档快得多。











