使用jq将字符串列表转换为JSON数组

12

如果有一个字符串列表(每行一个字符串),例如:

str1
str2
...

我该如何将它们转换为JSON列表["str1", "str2", ...]

1个回答

16
假设输入在标准输入上给出,以下命令解决了这个问题:

jq -Rn '[inputs]'

标志-R将输入作为“原始”(即未引用的字符串)读取,-n将stdin传递给inputs(使用-s淹没不起作用,因为与-R结合时,它会将整个输入读取为单个字符串)。 添加-c以像问题中一样在一行上打印JSON。

可以通过添加一个小过滤器来跳过任何空行(例如尾随换行符):

jq -Rn '[inputs|select(length>0)]'
如果字符串被其他字符(如,)分隔,则可以使用分割字符串。
jq -R 'split(",")'

这也可以用来在\n上进行分割,以解决上述情况,但是我的(未经验证的)假设是,上述解决方案对于使用其他行终止符的系统更具可移植性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接