使用JQ将值为列表的字典转换为扁平化CSV的实现求解
解决方案
直接使用如下JQ语句即可得到预期输出:
to_entries[] | "\(.key);\(.value[])"
如果需要兼容包含特殊字符(如引号、分号)的字段,可以使用更规范的拼接方式:
to_entries[] | [.key, .value[]] | join(";")
逻辑说明
to_entries会将原JSON对象转换为数组,数组的每个元素都是包含key(原对象的键)和value(原对象对应键的值数组)的对象- 后缀的
[]会遍历to_entries输出的每一个对象 .value[]会展开每个键对应的数组的所有元素,JQ的迭代特性会自动将每个元素和对应的键拼接为单独的输出行- 不需要额外使用
as变量绑定或map操作,也不需要调用@csv(@csv默认用逗号分隔且会给字符串加引号,不符合你要求的分号分隔无额外引号的输出)
内容的提问来源于stack exchange,提问作者koks der drache
相关产品推荐
相关产品推荐

