如何在Bash脚本中将多个独立JSON对象转换为指定结构的JSON数组
实现方案
你可以使用bash生态下专门处理JSON的工具jq完成转换,操作步骤如下:
1. 安装jq(若环境未安装)
不同发行版的安装命令参考:
- Debian/Ubuntu 系列:
sudo apt install jq - RHEL/CentOS/Fedora 系列:
sudo yum install jq - macOS(Homebrew):
brew install jq
2. 执行转换命令
假设你的原始输入文件名为input.json,执行如下命令即可得到目标格式的输出:
jq -s 'map({created_at, action_name, name: .author.name, ref: .push_data.ref, commit_title: .push_data.commit_title})' input.json
如果需要把结果保存到文件,在命令末尾追加重定向即可:
jq -s 'map({created_at, action_name, name: .author.name, ref: .push_data.ref, commit_title: .push_data.commit_title})' input.json > output.json
命令说明
-s(全称--slurp)参数作用是把输入流中所有独立的JSON对象读取为一个数组map()遍历数组中的每个原始JSON对象,按需提取字段构造新的对象:- 直接提取顶层字段
created_at、action_name - 提取嵌套字段
.author.name重命名为name - 提取嵌套字段
.push_data.ref重命名为ref - 提取嵌套字段
.push_data.commit_title重命名为commit_title
- 直接提取顶层字段
内容的提问来源于stack exchange,提问作者zuki
相关产品推荐
相关产品推荐

