使用 jq 以人类可读格式打印 JSON 数组
Print a JSON array in human readable format using jq
我在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
命令。
请注意,数组的元素数量和每个元素的 key/value 对数量是可变的,事先无法得知。
如果您不介意输出末尾有一个空行,这应该可以正常工作:
jq -r '.[] | (to_entries[] | "\(.key) : \(.value)"), ""'
避免额外换行的一种方法是使用 join
两次:
[.[]
| [ (to_entries[] | "\(.key) : \(.value)}") ]
| join("\n")]
| join("\n\n")
我在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
命令。
请注意,数组的元素数量和每个元素的 key/value 对数量是可变的,事先无法得知。
如果您不介意输出末尾有一个空行,这应该可以正常工作:
jq -r '.[] | (to_entries[] | "\(.key) : \(.value)"), ""'
避免额外换行的一种方法是使用 join
两次:
[.[]
| [ (to_entries[] | "\(.key) : \(.value)}") ]
| join("\n")]
| join("\n\n")