如何使用jq将JSON数组转换为易读的逐行键值对输出格式
jq不定长JSON数组转格式化键值对输出方案
直接使用如下命令即可满足要求,支持任意数量的数组元素、任意数量的对象键值对,自动在不同数组元素的输出之间插入空行分隔:
jq -r '.[] | (to_entries[] | "\(.key) : \(.value)"), ""' your_file.json
参数解释
-r:输出原始字符串,避免给文本结果自动包裹双引号.[]:遍历最外层JSON数组的所有元素to_entries[]:将每个对象自动转换为{"key": "键名", "value": "值"}格式的数组并遍历,无需提前知道对象的键名和数量- 末尾的
, "":在每个对象的所有键值对输出完成后追加一个空行,实现不同对象输出的分隔效果
效果验证
使用你提供的示例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
内容的提问来源于stack exchange,提问作者FedKad
相关产品推荐
相关产品推荐

