专用工具:jq(推荐首选)
jq
是专为JSON设计的轻量级命令行处理器,支持过滤、转换和格式化。
安装方法:
sudo apt install jq # Debian/Ubuntu sudo yum install jq # CentOS/RHEL
常用操作示例:
- 提取字段值(如解析
data.json
中的name
字段):cat data.json | jq '.name' # 输出: "Alice"
- 过滤数组(获取数组中所有
id
):echo '{"users": [{"id": 101}, {"id": 102}]}' | jq '.users[].id' # 输出:101 102
- 复杂查询(嵌套对象解析):
jq '.config.server.ip' config.json
- 格式化输出(美化JSON):
jq '.' unformatted.json
Python脚本(内置库支持)
Python的json
库适合复杂逻辑或脚本集成。
基础示例:
import json with open('data.json') as f: data = json.load(f) print(data["key"])
命令行一行解析:
python3 -c "import json,sys; obj=json.load(sys.stdin); print(obj['name'])" < data.json
文本处理工具:grep/sed/awk(简易场景)
⚠️ 仅适用于简单JSON结构(需严格匹配格式)
提取特定值:
grep -oP '"name": "\K[^"]+' data.json # 提取name值 sed -n 's/.*"price": \([0-9.]*\).*/\1/p' data.json # 提取数字
Node.js(JavaScript运行时)
适合熟悉JS的开发者:
node -e "const fs=require('fs'); const data=JSON.parse(fs.readFileSync('data.json')); console.log(data.key);"
其他工具
jo
/jshon
:
生成或解析JSON(需单独安装)。json_pp
(Perl模块):echo '{"key":"value"}' | json_pp # 格式化输出
方法对比与选择建议
工具 | 易用性 | 功能强大 | 适用场景 |
---|---|---|---|
jq | 日常查询、复杂过滤 | ||
Python | 脚本集成、自定义逻辑 | ||
grep | 简单键值提取(谨慎使用) | ||
Node.js | 前端/全栈开发环境 |
安全与最佳实践
- 验证JSON合法性:
使用jq .
或在线校验器(如JSONLint)避免语法错误。 - 处理敏感数据:
避免在命令行直接暴露API密钥(使用环境变量或配置文件)。 - 性能优化:
大文件处理时优先用jq
或Python,避免grep/sed
内存溢出。
- 首选方案:
jq
(功能全面,语法简洁) - 备选方案:Python(灵活扩展)、Node.js(JS生态)
- 不推荐:纯文本工具(易出错,难维护)
通过上述方法,可高效解决Linux下的JSON解析需求,建议掌握jq
基础语法(官方教程)并熟悉Python的json
库,以应对不同场景。
引用说明参考jq官方文档、Python JSON库文档及Linux命令行工具手册,实践建议基于社区最佳实践总结。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5843.html