使用 jq 以人类可读的格式打印 JSON 数组

问题描述 投票:0回答:2

我对

jq
的经验相对较少,所以答案可能很简单,但我不知怎么在网上找不到。

我有一个像这样的 JSON 数组:

[
 {
  "key1": "value1a",
  "key2": "value2a",
  "key3": "value3a",
  "keyn": "valuena"
 },
 {
  "key1": "value1b",
  "key2": "value2b",
  "key3": "value3b",
  "keyn": "valuenb"
 },
 {
  "key1": "value1z",
  "key2": "value2z",
  "key3": "value3z",
  "keyn": "valuenz"
 }
]

我想以以下“人类可读”格式打印它:

key1 : value1a
key2 : value2a
key3 : value3a
keyn : valuena

key1 : value1b
key2 : value2b
key3 : value3b
keyn : valuenb

key1 : value1z
key2 : value2z
key3 : value3z
keyn : valuenz

最好使用

jq
命令。

请注意,数组的元素数量以及每个元素的键/值对的数量是可变的并且无法提前知道。

json formatting jq
2个回答
1
投票

如果您不介意输出末尾有一个空行,这应该可以正常工作:

jq -r '.[] | (to_entries[] | "\(.key) : \(.value)"), ""'

在线演示


1
投票

避免额外换行的一种方法是使用

join
两次:

[.[]
 | [ (to_entries[] | "\(.key) : \(.value)}") ]
   | join("\n")]
| join("\n\n")
© www.soinside.com 2019 - 2024. All rights reserved.