Sublime校验JSON格式_Sublime JSON Lint插件使用【验证】

9次阅读

jsonlint报错无行号定位时,需检查控制字符、编码及bom头;sublime语法高亮不校验trailing comma等错误,须用jsonlint工具或正确配置插件;校验通过但接口失败需排查注释、科学计数法及换行符。

Sublime校验JSON格式_Sublime JSON Lint插件使用【验证】

JSON校验失败时,jsonlint 报错但没定位到行号?

Sublime 自带的 JSON 语法高亮不等于校验,它只检查基础结构(比如括号是否匹配),遇到 "key": NULL, 这种 trailing comma 或 "name": "张三", 后多逗号,直接静默忽略——根本不会报错。真正要发现这类问题,得靠 jsonlint 命令行工具或插件调用它。

常见现象是:保存后文件看起来“没问题”,但前端 JSON.parse() 报错,或者后端返回 400 Bad Request,而 Sublime 界面毫无提示。

  • 确保已安装 Python(jsonlint 是 Python 工具),运行 pip install jsonlint
  • 插件如 SublimeLinter-jsonlint 必须配置 executable 路径,windows 用户常填成 jsonlint.cmd,实际应为 jsonlint(Python Scripts 目录下)
  • Mac/linux 用户若用 pyenv 或 condawhich jsonlint 结果需填进插件设置,否则插件找不到命令,误判为“无错误”

Sublime 中按 Ctrl+Shift+P 调不出 JSONLint: Validate

这不是插件没装,而是插件没“激活”——Sublime 不会自动为 .json 文件启用 JSON 校验,必须手动指定语法类型或绑定文件关联。

  • 先确认当前文件右下角显示的是 JSON,不是 Plain textJavaScript;点一下那里手动选 JSON
  • 如果用了 SublimeLinter + SublimeLinter-jsonlint 组合,它默认只在保存时校验,不提供命令面板入口;想手动触发就得装独立插件 JSONLint(作者:mikemaccana)
  • 装完重启 Sublime,再按 Ctrl+Shift+P 搜索 JSONLint: Validate 才会出现

jsonlintInvalid control character at: line 1 column 2 (char 1) 怎么查?

这通常不是语法错,而是文件里混入了不可见控制字符,比如从 word 复制过来的中文引号、Windows 记事本存的 BOM 头、或编辑器自动插入的零宽空格(u200b)。

  • 用 Sublime 的 View → Show console,输入 view.encoding() 看当前编码,非 UTF-8 时容易出这个错
  • 打开 View → Character Palette,把光标挨个挪到报错位置前后,看有没有异常符号(尤其注意引号、冒号、逗号是否全角)
  • 临时解决:全选 → Ctrl+Shift+P → 输入 Convert to UTF-8 → 再保存,多数能过

校验通过但接口仍报 JSON 解析失败?重点查这三点

Sublime 插件校验的是“标准 JSON”,但很多系统(尤其是老后端或嵌入式设备)对 JSON 的容忍度更低,或额外要求格式规范。

  • 检查是否有注释:jsonlint 默认不支持 ///* */,但某些插件允许开启 allow_comments,开了就掩盖真实问题
  • 确认数字没用科学计数法:1e5 合法,但部分 Java 或 C++ JSON 库会拒收,改用 100000
  • 留意尾部换行:echo '{"a":1}' > a.json 生成的文件末尾无换行,某些严格解析器会认为不完整,Sublime 插件不报,但 curl -d @a.json 可能失败

JSON 校验本身很简单,难的是搞清“谁在解析”“用什么库”“开了哪些宽松选项”。别只盯着 Sublime 有没有红波浪线,抓包看请求体、用 python -m json.tool xxx.json 交叉验证,才不容易漏掉那种“看着对、跑起来跪”的细节。

text=ZqhQzanResources