处理多个"元素"在jq的一个JSON文件中

时间:2016-09-28 16:21:24

标签: json jq

我有一个JSON文件,其中包含多个JSON - "元素",例如。

{
  "name": "Name 1",
  "foo": "Bar"
}
{
  "id": 123,
  "bar": "Foo"
}

我只对第二个元素感兴趣,我需要通过'索引来查询'元素(即我不知道元素将包含哪些字段)。

如何使用jq实现此目的?

1 个答案:

答案 0 :(得分:3)

根据您拥有的jq版本,有几种可能的答案,所以在这里我将重点介绍一个通用且有用的答案。

  1. 使用-s(“slurp”)选项获取第二个JSON实体,如jq -s '.[1]'

  2. 在jq 1.4及更高版本中,jq过滤器.[]在对象上使用时会保留键的顺序。 (如果你对密钥名称一无所知,使用jq 1.3,你可能会失败。)例如,使用jq 1.4或更高版本:

  3. $ jq '.[]' {"b":1, "a":2} 1 2