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

332nm8kg  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(99)

我在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命令。
请注意,数组的元素数量和每个元素的键/值对数量是可变的,并且事先不知道。

yrdbyhpb

yrdbyhpb1#

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

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

字符串
Online demo

agyaoht7

agyaoht72#

避免额外换行符的一种方法是使用join两次:

[.[]
 | [ (to_entries[] | "\(.key) : \(.value)}") ]
   | join("\n")]
| join("\n\n")

字符串

相关问题