前言
jq 是一个通用的 linux 命令行 json 处理器,它允许开发人员快速地解析、过滤和转换 json 数据。在本文中,我们将介绍常用的 jq 命令,展示如何简化 json 处理任务。
示例 json 文件内容
您可以将以下示例数据保存在名为 input.json 的文件中。这个 json 数据表示具有各自姓名、年龄、国家和地址的人员数组。
[
{
"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 命令,后跟一个句点(“.”):
jq '.' input.json
2. retrieve a specific json key
要从 json 对象中提取特定键的值,使用以下语法:
jq '.key' input.json
例如,要提取 name 键的值,使用:
jq '.name' input.json
3. access nested json values
要访问嵌套的 json 值,使用点(“.”)表示法:
jq '.key1.key2.key3' input.json
例如,要提取嵌套在address 下的 city 键的值,使用:
jq '.address.city' input.json
4. iterate over json arrays
使用方括号(“[]”)来迭代 json 数组:
jq '.[]' input.json
要从数组中的每个对象提取特定的键,使用 pipe(“|”)操作符:
jq '.[] | .key' input.json
5. filter json data
如果需要根据特定条件过滤 json 数据,可以使用 select 函数:
jq '.[] | select(.key == "value")' input.json
例如,要过滤数组中年龄大于 30 的对象,使用:
jq '.[] | select(.age > 30)' input.json
6. map and transform json data
要映射和转换 json 数据,使用大括号(“{}”):
jq '.[] | {key1: .key1, key2: .key2}' input.json
例如,要创建一个只有 name 和 age 键的 json 对象,使用:
jq '.[] | {name: .name, age: .age}' input.json
7. combine multiple json files
要合并两个 json 文件,使用 “*” 操作符:
jq -s '.[0] * .[1]' file1.json file2.json
8. perform arithmetic operations
jq 可以对数值 json 值执行算术运算:
jq '.number1 + .number2' input.json
9. sort json data
要根据特定键对 json 数据进行排序,使用 sort_by 函数:
jq '.[] | sort_by(.key)' input.json
| 1 | jq’.[] | sort_by(.key)'input.json |
| — | ------------------------------------------- |
例如,按照 age 键对对象数组进行排序,请使用:
jq '.[] | sort_by(.age)' input.json
10. group json data
要根据特定键对 json 数据进行分组,使用 group_by 函数:
jq 'group_by(.key)' input.json
例如,按照 country 键对对象数组进行分组,请使用:
jq 'group_by(.country)' input.json
到此这篇关于在linux命令行中解析json的详细步骤的文章就介绍到这了,更多相关linux命令行解析json内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论