Shell中格式化JSON文件的实用指南
在开发过程中,JSON文件因其轻量级和易读性而被广泛应用,有时我们得到的JSON文件可能是未格式化的(压缩成一行)或格式不规范的,这在调试或查看时会造成不便,本文将介绍几种在Shell环境下格式化JSON文件的方法,帮助你轻松处理JSON数据。
使用Python(推荐)
Python内置了json模块,可以方便地格式化JSON文件,以下是一个简单的Shell脚本示例:
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Usage: $0 <json_file>"
exit 1
fi
input_file=$1
output_file="${input_file%.json}_formatted.json"
python3 -c "
import json
import sys
with open('$input_file', 'r') as f:
data = json.load(f)
with open('$output_file', 'w') as f:
json.dump(data, f, indent=4, ensure_ascii=False)
print('JSON file has been formatted to $output_file')
"
使用方法:
chmod +x format_json.sh ./format_json.sh input.json
使用jq工具
jq是一个轻量级且灵活的命令行JSON处理器,如果系统中没有安装,可以先安装:
- Ubuntu/Debian:
sudo apt-get install jq - macOS:
brew install jq
基本用法:
cat input.json | jq '.' > output.json
或者直接:
jq '.' input.json > output.json
jq还支持多种格式化选项:
- 使用
--indent参数指定缩进:jq --indent 4 '.' input.json
- 使用
-c或--compact-output输出压缩后的JSON(单行):jq -c '.' input.json
使用Node.js
如果系统中安装了Node.js,也可以利用其JSON处理能力:
node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$1', 'utf8')); fs.writeFileSync('$1', JSON.stringify(data, null, 2));" "$1"
使用在线工具(不推荐处理敏感数据)
对于不包含敏感信息的JSON文件,可以使用在线JSON格式化工具,如:
- https://jsonformatter.curiousconcept.com/
- https://beautifytools.com/json-formatter.php
但这种方法不适用于处理包含敏感数据的JSON文件。
注意事项
- 备份原始文件:在格式化JSON文件前,建议先备份原始文件,以防格式化过程中出现意外。
- 验证JSON有效性:格式化前最好验证JSON文件的有效性,可以使用
python3 -m json.tool input.json或jq . input.json来检查。 - 处理大文件:对于非常大的JSON文件,Python方法可能更高效,因为
jq在某些情况下可能会消耗较多内存。 - 特殊字符:确保处理JSON文件时正确处理了Unicode字符,特别是在使用Python时,可以添加
ensure_ascii=False参数。
在Shell环境下格式化JSON文件有多种方法选择,Python方法灵活且功能强大,适合大多数情况;jq工具轻量高效,适合简单的格式化任务;Node.js方法则是另一种可行的选择,根据你的具体需求和系统环境选择最适合的方法,可以大大提高处理JSON文件的效率。



还没有评论,来说两句吧...