如何使用jq将JSON对象的所有字段转换为指定格式的CSV?
用jq将键值对JSON转为指定格式CSV
要把你给出的键值对JSON转换成每行键,值的CSV格式,用jq可以这么操作:
核心命令
假设你的JSON数据保存在input.json文件中,执行以下命令:
jq -r 'to_entries[] | "\(.key),\(.value)"' input.json
命令解释
to_entries:把原JSON对象转换成由{"key": "字段名", "value": 对应值}组成的数组,比如原对象会被转成:[{"key":"a","value":68370432},{"key":"b","value":50462720},...][]:遍历这个数组里的每一个元素"\(.key),\(.value)":把每个元素的key和value拼接成键,值格式的字符串-r:让jq输出原始的字符串内容,而不是带引号的JSON字符串
效果验证
执行命令后,就能得到你想要的输出:
a,68370432 b,50462720 c,53608448 d,245039104
如果你不想用文件,直接从标准输入传数据,也可以这么写:
echo '{"a":68370432,"b":50462720,"c":53608448,"d":245039104}' | jq -r 'to_entries[] | "\(.key),\(.value)"'
内容的提问来源于stack exchange,提问作者Aldo
相关产品推荐
相关产品推荐

