基本 JSON 查询
让我们从学习如何从 JSON 对象中提取简单数据开始。
你现在应该在你的 /home/labex/project/
目录下有 data.txt
文件。它包含表示景点列表的 JSON 数据。该文件内容如下所示:
[
{
"name": "The Great Wall of China",
"location": "Shanxi Province",
"opening_hours": "24 hours"
},
{
"name": "Terracotta Warriors",
"location": "XiAn",
"opening_hours": "9:00 AM - 5:00 PM"
}
]
我们这里的目标是提取此 JSON 数据中列出的所有景点的名称。
为了实现这个目标,使用以下命令:
cat ~/project/data.txt | jq '.[] | .name'
此命令将产生以下输出:
"The Great Wall of China"
"Terracotta Warriors"
让我们分解一下这个命令中发生了什么。cat ~/project/data.txt
只是读取 data.txt
文件的内容。|
符号,称为管道(pipe),将 cat
命令的输出作为输入传递给 jq
命令。提取逻辑的核心在于 jq '.[] | .name'
。以下是 jq
如何处理它的:
.[]
告诉 jq
遍历 JSON 数组中的每个元素(在本例中,是每个景点对象)。
|
再次将迭代的结果传递给下一个操作,在本例中是 .name
。
.name
从每个景点对象中提取与 "name"
键关联的值。
本质上,该命令遍历每个景点,选出其名称并显示它。