格式化并高亮输出完整 JSON
jq '.' data.jsonJSON 的取值、过滤、重构、统计与格式转换技巧,覆盖 API 响应与 JSON 日志的典型场景。
格式化并高亮输出完整 JSON
jq '.' data.json读取嵌套对象中的字段
jq '.user.name' data.json读取数组首个元素的字段
jq '.items[0].id' data.json展开数组,逐个输出元素
jq '.items[]' data.json字段缺失或为 null 时给默认值
jq '.user.name // "unknown"' data.json过滤出满足条件的元素
jq '.[] | select(.age > 18)' users.json提取字段组成新数组
jq 'map(.name)' users.json统计满足条件的记录数
jq '[.[] | select(.active)] | length' users.json过滤后直接取指定字段
jq '.[] | select(.role == "admin") | .email' users.json按数组字段是否包含某值过滤
jq '.[] | select(.tags | index("vue"))' posts.json构造只含所需字段的新对象
jq '{name: .user.name, city: .user.city}' data.json删除敏感字段后再输出
jq 'del(.password, .token)' user.json用简写重组数组元素字段
jq '.items | map({id, price})' data.json给对象合并新增字段
jq '. + {env: "prod"}' data.json按键名过滤对象字段
jq 'to_entries | map(select(.key != "password")) | from_entries' user.json按字段升序排序
jq 'sort_by(.price)' products.json按数值字段降序排序
jq 'sort_by(-.price)' products.json按字段分组并统计数量
jq 'group_by(.category) | map({category: .[0].category, count: length})' products.json对某数值字段求和
jq '[.[].price] | add' products.json按字段去重,保留首次出现
jq 'unique_by(.email)' users.json去掉字符串引号,便于脚本使用
jq -r '.items[].name' data.json-r 只影响字符串,数字本来就不带引号
压缩为单行,适合日志与管道
jq -c '.' data.json输出 CSV,可重定向为表格文件
jq -r '.[] | [.id, .name] | @csv' users.json输出制表符分隔文本
jq -r '.[] | [.id, .name] | @tsv' users.json把 shell 变量作为参数传入表达式
jq --arg env "prod" '.env = $env' data.json合并多个 JSON 数组为一个数组
jq -s 'add' a.json b.json-s 会把全部输入整体读成一个数组
逐行筛选 JSON 日志中的错误
jq -c 'select(.level == "error")' app.log要求每行一个完整 JSON,否则解析报错
用 shell 变量与当前时间生成 JSON
jq -n --arg v "$(git rev-parse --short HEAD)" '{"version": $v, "builtAt": (now | todate)}' > meta.json递归提取所有含 id 的对象字段
jq '.. | objects | select(has("id")) | .id' data.json把嵌套结构压平为点分键对象
jq 'reduce paths(scalars) as $p ({}; .[($p | join("."))] = getpath($p))' data.json本网站使用 Cookie 以确保您在我们的网站上获得最佳体验。 隐私政策.