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

Transform a list of strings to JSON array using jq

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

str1
str2
...

如何将它们转换成 JSON 列表 ["str1", "str2"]

假设在stdin上给出了输入,下面的命令解决了问题:

jq -Rn '[inputs]'

标志 -R 将输入读取为“原始”(即未加引号的字符串)并且 -n 将标准输入移交给 inputs(用 -s 吞咽不会工作,因为当与 -R 组合时,它读取整个输入一个字符串)。添加 -c 以像问题中那样在一行上打印 JSON。

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

jq -Rn '[inputs|select(length>0)]'

如果字符串被其他字符分隔,如,,则字符串可能被分割为

jq -R 'split(",")'

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