首页 > 解决方案 > jq 将数组中的多个对象合并为一个

问题描述

我有一系列 json 文件,我想从中提取一些信息并使用 jq 粘贴到 CSV 中。我需要的数据如下所示:

[{"content":"Apples","_id":"7OLZ","type":"fruit}, 
{"content":"Oranges","_id":"5BHY","type":"fruit"},
{"content":"Pears","_id":"DJQD","type":"fruit"}]

我希望能够在没有其他键的情况下仅将水果值组合成一个字符串,并在电子表格中占据一个单元格。这些文件还可以在数组中包含可变数量的水果。

"Apples Oranges Pears"

这是可行的吗?我认为,关于 SO的这篇文章很接近,但作为一个不经常使用 json 数据或 jq 的人,我无法拼凑解决方案的实际作用。

非常感谢您的任何见解

标签: jsonjq

解决方案


我的解决方案将“内容”键的所有值放入一个数组中,然后用空格连接数组的元素。

jq '[.[] | .content ]|join(" ")'

输出:"Apples Oranges Pears"

鉴于map(x) 的定义[.[] | x],这是等价的。

jq 'map(.content)|join(" ")'

推荐阅读