前言JQ 是一个通用的 Linux 命令行 JSON 处理器它允许开发人员快速地解析、过滤和转换 JSON 数据。在本文中我们将介绍常用的 JQ 命令展示如何简化 JSON 处理任务。示例 JSON 文件内容您可以将以下示例数据保存在名为input.json的文件中。这个 JSON 数据表示具有各自姓名、年龄、国家和地址的人员数组。12345678910111213141516171819202122232425262728293031323334353637383940414243444546[{name:Alice,age:35,country:USA,address: {street:123 Main St,city:New York,state:NY,zip:10001}},{name:Bob,age:28,country:Canada,address: {street:456 Maple Ave,city:Toronto,province:ON,postal_code:M5V 1A1}},{name:Charlie,age:42,country:USA,address: {street:789 Oak St,city:San Francisco,state:CA,zip:94102}},{name:David,age:23,country:Canada,address: {street:321 Pine St,city:Vancouver,province:BC,postal_code:V6B 2P4}}]使用示例1. Pretty Print JSON Data要美观地打印 JSON 数据只需将 JSON 文件传递给 JQ 命令后跟一个句点“.”1jq.input.json2. Retrieve a Specific JSON Key要从 JSON 对象中提取特定键的值使用以下语法1jq.keyinput.json例如要提取name键的值使用1jq.nameinput.json3. Access Nested JSON Values要访问嵌套的 JSON 值使用点“.”表示法1jq.key1.key2.key3input.json例如要提取嵌套在address下的city键的值使用1jq.address.cityinput.json4. Iterate Over JSON Arrays使用方括号“[]”来迭代 JSON 数组1jq.[]input.json要从数组中的每个对象提取特定的键使用 pipe“|”操作符1jq.[] | .keyinput.json5. Filter JSON Data如果需要根据特定条件过滤 JSON 数据可以使用 select 函数1jq.[] | select(.key value)input.json例如要过滤数组中年龄大于 30 的对象使用1jq.[] | select(.age 30)input.json6. Map and Transform JSON Data要映射和转换 JSON 数据使用大括号“{}”1jq.[] | {key1: .key1, key2: .key2}input.json例如要创建一个只有name和age键的 JSON 对象使用1jq.[] | {name: .name, age: .age}input.json7. Combine Multiple JSON Files要合并两个 JSON 文件使用 “*” 操作符1jq -s.[0] * .[1]file1.json file2.json8. Perform Arithmetic OperationsJQ 可以对数值 JSON 值执行算术运算1jq.number1 .number2input.json9. Sort JSON Data要根据特定键对 JSON 数据进行排序使用sort_by函数1jq.[] | sort_by(.key)input.json| 1 |jq’.[] | sort_by(.key)input.json || — | ------------------------------------------- |例如按照age键对对象数组进行排序请使用1jq.[] | sort_by(.age)input.json10. Group JSON Data要根据特定键对 JSON 数据进行分组使用group_by函数1jqgroup_by(.key)input.json例如按照country键对对象数组进行分组请使用1jqgroup_by(.country)input.json