如何使用 jq?
jq 是一个功能强大的命令行 JSON 处理器,让开发者能够像使用 sed
、awk
和 grep
处理文本一样轻松地过滤、映射和转换 JSON 数据。jq 提供了众多处理 JSON 数据的优势:
- 轻量级高效:无需加载整个数据集即可处理 JSON
- 强大的查询语言:支持复杂的数据转换和过滤
- 高性能:即使处理大型 JSON 文件也能保持快速响应
- 丰富的社区支持:完善的文档和大量示例
典型的应用场景包括:
- API 响应处理:从复杂的 API 响应中提取相关数据
- 日志分析:解析和过滤 JSON 格式的日志文件
- 数据清洗:预处理 JSON 数据以用于数据分析
- 配置转换:批量修改 JSON 配置文件
在 JSON For You 中使用 jq
JSON For You 支持您进行在线 jq 处理,只需按如下步骤操作:
- 将 JSON 字符串粘贴到左侧编辑器中;
- 点击顶部的「搜索命令」,找到「展示 jq 输入框」,点击后在底部会出现一个 jq 输入框;
- 输入 jq 表达式(例如:
.[] | select(.status == "active")
)会自动执行 jq 命令; - 在右侧编辑器可以查看结果;
- 当您需要多次编辑时,可以通过
Ctrl+Enter
快捷键快速交换左右两侧编辑器的文本;

常用 jq 命令示例
基本过滤
从 JSON 对象中提取特定字段:
# 获取数组中的所有用户名
.[] | .name
# 提取嵌套字段
.users[] | {id: .user_id, name: .profile.name}
数据转换
修改 JSON 结构和值:
# 添加新字段
.[] | . + {full_name: (.first_name + " " + .last_name)}
# 转换值
.items[] | {product: .name, price: (.price * 1.1)} # 添加 10% 税费
条件选择
基于条件过滤数据:
# 选择活跃用户
.users[] | select(.status == "active" and .login_count > 5)
# 排除空值
.data[] | select(.value != null and .value != "")
jq 高级技巧
数组操作
# 获取唯一值
.[] | .category | unique
# 计算元素数量
.[] | .tags | length as $len | {item: ., tag_count:$len}
复杂转换
# 按类别分组项目
.group_by(.category)[] | {categoryKey: .[].category, items:.}
# 展平嵌套数组
.recursive_field[] | .[] | {id: .id, value: .data.value}