使用 jq 在一个 JSON 文件中处理多个 "elements"
Handling multiple "elements" in one JSON file with jq
我有一个 JSON 文件,其中包含多个 JSON-"elements",例如
{
"name": "Name 1",
"foo": "Bar"
}
{
"id": 123,
"bar": "Foo"
}
我只对第二个元素感兴趣,需要通过元素的 'index' 进行查询(即我不知道该元素将包含哪些字段)。
如何使用 jq
实现此目的?
有几种可能的答案,具体取决于您拥有的 jq 版本,因此在这里我将重点介绍一个通用且通常有用的答案。
使用 -s
("slurp") 选项获取第二个 JSON 实体,如 jq -s '.[1]'
在 jq 1.4 及更高版本中,jq 过滤器 .[]
在对象上使用时会保留键的顺序。 (使用 jq 1.3,如果你对键名一无所知,你可能会倒霉。)例如,使用 jq 1.4 或更高版本:
$ jq '.[]'
{"b":1, "a":2}
1
2
我有一个 JSON 文件,其中包含多个 JSON-"elements",例如
{
"name": "Name 1",
"foo": "Bar"
}
{
"id": 123,
"bar": "Foo"
}
我只对第二个元素感兴趣,需要通过元素的 'index' 进行查询(即我不知道该元素将包含哪些字段)。
如何使用 jq
实现此目的?
有几种可能的答案,具体取决于您拥有的 jq 版本,因此在这里我将重点介绍一个通用且通常有用的答案。
使用
-s
("slurp") 选项获取第二个 JSON 实体,如jq -s '.[1]'
在 jq 1.4 及更高版本中,jq 过滤器
.[]
在对象上使用时会保留键的顺序。 (使用 jq 1.3,如果你对键名一无所知,你可能会倒霉。)例如,使用 jq 1.4 或更高版本:
$ jq '.[]'
{"b":1, "a":2}
1
2