将字符串或列表的映射转换为值的字符串或逗号分隔的值

亚历克斯·哈维

我有一个JSON文件:

{
  "foo": "xxx",
  "bar": ["yyy","zzz"]
}

我想使用JQ将其转换为:

xxx yyy,zzz

我已经尝试了各种方法,最接近的是:

▶ cat xx.json | jq -r 'to_entries[] | if (.value | type)=="string" then (.value) else (.value | join(",")) end' 
xxx
yyy,zzz

请注意,我事先不知道JSON文件中键的名称,并且我依靠的行为to_entries按键对输出进行排序(按键排序)(以防万一有人在考虑这样做的方式)导致输出不确定地排序)。

是否有使用JQ单缸衬套的简洁方法?

橄榄

就在这里:

<file jq -r '[.foo,(.bar|join(","))]|join(" ")'

它仅将两次.foo.bar字段连接两次,以使它们在同一行中。


如果您不知道键名,则可以使用以下命令:

<file jq -r 'to_entries|map(.value|[strings?//.[]]|join(","))|join(" ")'

这与您的解决方案很接近,除了它使用strings内置函数和运算符,//?避免使用if ... then ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将逗号分隔的字符串转换为列表

将逗号分隔的字符串转换为列表

PHP将逗号分隔的字符串转换为点或符号分隔的值,以存储在MySql中

将列表值拆分为逗号分隔的字符串

如何在Hugo模板中将值列表转换为逗号分隔的字符串

将枚举值转换为逗号分隔字符串的最有效方法

将固定宽度的非定界浮点字符串转换为逗号分隔的值

Angular 10-将FormControl数组值转换为以逗号分隔的字符串

将包含逗号分隔值的字符串转换为整数

将 pandas 数据框列值转换为逗号分隔的字符串

如何将逗号分隔值的字符串转换为数组

将逗号分隔的值字符串转换为XML后,SQL Server过程过早完成

将字符串列表转换为逗号分隔的字符串,而不重复

将映射值转换为字符串

将映射值转换为字符串数组

如何将逗号分隔的字符串或/ n分隔的字符串转换为jquery中的列表?

将逗号分隔的字符串转换为最后一个带有逗号的列表

C将逗号分隔的字符串转换为数组

将int []转换为逗号分隔的字符串

将逗号分隔的字符串转换为HashSet

将数组转换为逗号分隔的字符串

将逗号分隔的字符串转换为GetFiles SearchPattern

将数组转换为逗号分隔的字符串

Python:将元组转换为逗号分隔的字符串

将Ints数组转换为逗号分隔的字符串

将逗号分隔的字符串转换为 JSON

将逗号分隔的字符串转换为数组

将逗号分隔的字符串转换为日期时间

将列表转换成逗号分隔的字符串