如何使用jq将json从一种格式转换为另一种格式

时间:2017-08-22 22:26:32

标签: json jq

我想使用How to convert arbirtrary simple JSON to CSV using jq?中提供的解决方案将500多个json文件转换为csv格式,但我的json文件格式与建议的解决方案格式不同。

以下代表一个示例json文件:

[
  {
    "jou_entry": {
      "id": 655002886,
      "units": 2
    }
  },
  {
    "jou_entry": {
      "id": 655002823,
      "units": 4
    }
  },
  {
    "jou_entry": {
      "id": 657553949,
      "units": 6
    }
  }
]

建议的解决方案需要以下格式的json:

[
  {
    "id": 655002886,
    "units": 2
  },
  {
    "id": 655002823,
    "units": 4
  },
  {
    "id": 657553949,
    "units": 6
  }
]

我可以使用以下jq过滤器

将json从源格式转换为所需的格式
jq -r '[.[] | ."jou_entry"]' 

但我不喜欢过滤器中关键字“jou_entry”的硬编码。因为这需要为这么多文件定义单独的密钥。我希望没有硬编码值进行转换。

我该怎么做?请帮忙

1 个答案:

答案 0 :(得分:0)

这会获得所需的输出

jq '[.[] | .[]]'

手册中的说明。在数组上使用.[]时,它将返回数组的所有元素。当它在对象上使用时,它将返回对象的所有值。