名称: jq-json-processor
描述: 使用 jq(轻量级灵活的命令行 JSON 处理器)处理、筛选和转换 JSON 数据。
主页: https://jqlang.github.io/jq/
元数据: {"clawdbot":{"emoji":"🔍","requires":{"bins":["jq"]},"install":[{"id":"brew","kind":"brew","formula":"jq","bins":["jq"],"label":"安装 jq (brew)"},{"id":"apt","kind":"apt","package":"jq","bins":["jq"],"label":"安装 jq (apt)"}]}}
使用 jq 处理、筛选和转换 JSON 数据。
# 提取字段
echo '{"name":"Alice","age":30}' | jq '.name'
# 输出:"Alice"
# 提取多个字段
echo '{"name":"Alice","age":30}' | jq '{name: .name, age: .age}'
# 数组索引
echo '[1,2,3,4,5]' | jq '.[2]'
# 输出:3
# 遍历数组
echo '[{"name":"Alice"},{"name":"Bob"}]' | jq '.[].name'
# 输出:"Alice" "Bob"
# 筛选数组
echo '[1,2,3,4,5]' | jq 'map(select(. > 2))'
# 输出:[3,4,5]
# 获取长度
echo '[1,2,3]' | jq 'length'
# 输出:3
# 美化输出 JSON
cat file.json | jq '.'
# 紧凑输出
cat file.json | jq -c '.'
# 原始输出(去除引号)
echo '{"name":"Alice"}' | jq -r '.name'
# 输出:Alice
# 按键排序
echo '{"z":1,"a":2}' | jq -S '.'
# 条件筛选
jq '[.[] | select(.age > 25)]' people.json
# 分组
jq 'group_by(.category)' items.json
# 归约
echo '[1,2,3,4,5]' | jq 'reduce .[] as $item (0; . + $item)'
# 输出:15
# 从文件读取
jq '.users[0].name' users.json
# 处理多个文件
jq -s '.[0] * .[1]' file1.json file2.json
# 修改并保存
jq '.version = "2.0"' package.json > package.json.tmp && mv package.json.tmp package.json
从 API 响应中提取特定字段:
curl -s https://api.github.com/users/octocat | jq '{name: .name, repos: .public_repos, followers: .followers}'
转换类 CSV 数据:
jq -r '.[] | [.name, .email, .age] | @csv' users.json
调试 API 响应:
curl -s https://api.example.com/data | jq '.'
-r 输出原始字符串(去除引号)-c 输出紧凑格式(单行)-S 对对象键进行排序--arg name value 传递变量jq '.a' | jq '.b'完整手册:https://jqlang.github.io/jq/manual/
交互式教程:https://jqplay.org/