$ jq -c -n -e '[$x, $y]' --argjson x '"a"' --argjson y '"b"'
["a","b"]
我知道我可以做上面那样的事情。如果我想从 bash 数组生成一个 json 数组,如下所示。有没有办法使用任意长度的参数来做到这一点?
$ jq {some jq arguments} a b c # the bash array can be of an arbitrary length.
["a","b","c"]
注意 a、b、c 没有在命令行中引用,因为我希望输入简单。
从任意字符串列表创建有效的 JSON 数组有两种主要方法。一种是使用
jq
它的--args
选项:或者,如果元素不被编码为字符串(例如,它们可能是纯数字,或者之前准备好的 JSON 字符串或整个 JSON 对象),
请注意,
--args
and--jsonargs
及其参数必须是jq
.我正在使用
-n
禁用读取任何外部输入并-c
以“紧凑”输出格式创建 JSON,如问题所示。另一种方法是使用
jo
,一种专门用于在命令行上轻松生成 JSON 的工具:从给定参数生成数组的
-a
选项。jo
该
jo
工具推断对象本身的类型,因此列表如下将变成 JSON 数组