我想通过以紧凑模式打印来压缩 json 文件的空间 (
-c
),但我想在每个根级对象后面添加一个新行。
例如,对于以下对象
{
"a": {
"a1": 1,
"a2": [
null
]
},
"b": {
"b1": "test"
},
"c": [
1,
2,
3
]
}
我想将其打印为
{
"a":{"a1":1,"a2":[null]},
"b":{"b1":"test"},
"c":[1,2,3]
}
即每行一个根级对象(添加开始/结束括号)
我使用
将每一项打印在一行中echo '{"a":{"a1":1, "a2":[null]}, "b": {"b1":"test"}, "c": [1,2,3]}' | jq -c -r '. | to_entries | .[] | "\"\(.key)\": \(.value)"'
"a": {"a1":1,"a2":[null]}
"b": {"b1":"test"}
"c": [1,2,3]
但我无法形成单个有效的 JSON 对象。
有人可以提供一些建议吗? 谢谢
jq 如何进行漂亮打印的选择非常有限。 最好的选择是自己编写。这是使用
to_entries
和 @json
的非常手动的方法
jq -r '
"{", (to_entries
| (.[:-1][] | @json "\(.key):\(.value),"),
(last | @json "\(.key):\(.value)")
), "}"
'
{
"a":{"a1":1,"a2":[null]},
"b":{"b1":"test"},
"c":[1,2,3]
}