> 文本处理与搜索 > jq

jq: 处理 JSON 数据

jq 是一个强大的工具,用于在命令行高效处理和转换 JSON 数据。它用于过滤、切片、映射和转换 JSON 数据,即使在复杂的 JSON 结构中也能轻松提取所需信息。它经常与其他命令通过管道 (|) 结合使用。

概述

jq 接收 JSON 数据作为输入,并以各种方式对其进行处理和输出。它可以实现从简单的值提取到复杂的数组/对象操作,是在脚本环境中处理 JSON 的必备工具。

主要功能

  • JSON 数据解析和格式化
  • 提取和过滤特定字段
  • 数组和对象操作
  • 数据转换和重组

主要选项

输入/输出格式

过滤/转换

生成的命令:

请尝试组合命令。

描述:

`jq` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

基本 JSON 格式化

echo '{"name": "Alice", "age": 30}' | jq .

以易于阅读的格式输出输入的 JSON。

提取特定字段

echo '{"name": "Bob", "age": 25}' | jq '.name'

从 JSON 对象中提取“name”字段的值。

从数组元素中提取字段

echo '[{"name": "Alice"}, {"name": "Bob"}]' | jq '.[].name'

从 JSON 数组中的每个对象中提取“name”字段。

原始字符串输出

echo '{"city": "Seoul"}' | jq -r '.city'

不带引号地输出提取的字符串值。

选择多个字段并创建新对象

echo '{"name": "Charlie", "age": 40, "email": "charlie@example.com"}' | jq '{name: .name, age: .age}'

从现有对象中创建只包含“name”和“age”字段的新对象。

按条件过滤

echo '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]' | jq '.[] | select(.age >= 30)'

仅过滤年龄大于或等于 30 的用户。

转换数组元素 (map)

echo '[{"name": "Alice"}, {"name": "Bob"}]' | jq 'map(.name | ascii_upcase)'

将每个用户的名称转换为大写。


相同类别命令