jq:错误:无法用字符串索引数组

una*_*hez 3 json jq

我正在尝试为检查点管理服务器 api 执行 bash 脚本,但遇到了一些问题。我想获取 json 字典中的值,为此我必须使用变量。我正在输入这个命令:

echo $rulebase | jq --arg n "$0" '.rulebase[$n].to'
Run Code Online (Sandbox Code Playgroud)

我得到下一个错误:

jq:错误:无法用字符串索引数组

但是,如果我使用:

echo $rulebase | jq  '.rulebase[0].to'
Run Code Online (Sandbox Code Playgroud)

我得到了我需要的结果。我不知道如何在变量为数字时使用它们,有人可以帮助我吗?

oli*_*liv 8

您需要将提供给脚本的字符串转换为数字

echo "$rulebase" | jq --arg n "$1" '.rulebase[$n|tonumber].to'
Run Code Online (Sandbox Code Playgroud)


pea*_*eak 5

如果要传入数值,请使用

—-argjson
Run Code Online (Sandbox Code Playgroud)

而不是—-arg,它用于 JSON 字符串值。

如果您的 jq 不支持 —argjson,那么如果可能,现在将是升级的绝佳时机;否则,您可以使用tonumber.