如果有一个字符串列表(每行一个字符串),例如:
str1
str2
...
我该如何将它们转换为JSON列表["str1", "str2", ...]
?
如果有一个字符串列表(每行一个字符串),例如:
str1
str2
...
我该如何将它们转换为JSON列表["str1", "str2", ...]
?
jq -Rn '[inputs]'
标志-R
将输入作为“原始”(即未引用的字符串)读取,-n
将stdin传递给inputs
(使用-s
淹没不起作用,因为与-R
结合时,它会将整个输入读取为单个字符串)。 添加-c
以像问题中一样在一行上打印JSON。
可以通过添加一个小过滤器来跳过任何空行(例如尾随换行符):
jq -Rn '[inputs|select(length>0)]'
如果字符串被其他字符(如,
)分隔,则可以使用分割字符串。jq -R 'split(",")'
这也可以用来在\n
上进行分割,以解决上述情况,但是我的(未经验证的)假设是,上述解决方案对于使用其他行终止符的系统更具可移植性。