将 bash 数组字符串化为 json 字符串

问题描述 投票:0回答:1

我是 bash 新手,我有一个 bash 脚本,其中包含一个名为“输出”的数组变量

我想将 bash 数组转换为 JSON 字符串。例如:

原始数组:

output = ['one', 'two']

期望的输出:

'["one","two"]'

我尝试过以下方法:

"$(jq -c -n '$ARGS.positional' --args "${output[@]}")"

但这似乎将数组包裹在另一组方括号内:

'["[\"one\",\"two\"]"]'

这不是我想要的。

另外,我想将 JSON 字符串分配给变量。

我也看到我可以做到这一点:

echo '{"foo" : "bar"}' | jq -R .

但我不知道如何使用变量“输出”而不是硬编码对象。另外,不知道如何将其结果分配给变量

编辑

这是 bash 脚本:

service_list_json="$(jq -c -n '$ARGS.positional' --args "${output[@]}")"

编辑2

好的,我想我可能知道问题出在哪里了。原始数组如下所示:

'["one","two"]'

我猜测数组周围的额外引号导致它被视为字符串?

json bash jq
1个回答
0
投票

$output
是一个字符串,而不是一个数组。

要声明 bash 数组,您需要以下语法:

output=(one two)

然后它会提供预期的结果。

service_list_json="$(jq -c -n '$ARGS.positional' --args "${output[@]}")"
echo "$service_list_json"

输出:

["one","two"]
© www.soinside.com 2019 - 2024. All rights reserved.