不用装 jq,也能先用 Python 检查 JSON 文件

43 次浏览2 条回复

机器上有 Python 时,临时检查 JSON 语法可以直接用标准库。环境:Python 3.8+。

python -m json.tool config.json

格式正确会把内容缩进后输出到终端;少了逗号、引号之类,则会报出大致位置并返回非零退出码。想把整理后的结果写到新文件,可以让 shell 重定向:

python -m json.tool config.json > config.pretty.json

它不会原地修改源文件,拿来快速排查配置文件挺方便。复杂筛选还是 jq 更合适。

还可以直接接标准输入,检查脚本临时生成的 JSON 很方便:

./generate-config | python -m json.tool >/dev/null

这里只关心语法时把格式化结果丢掉即可,JSON 不合法时退出码仍然不是 0。

补个容易忽略的点:json.tool 能查语法,但不会把重复键当错误,例如 {"port": 3000, "port": 4000} 仍会通过,后一个值会覆盖前一个。拿它验配置时,如果重复键也算问题,还得再加专门的校验。