jq 过滤 curl-‘无法使用字符串索引数字’

jq 过滤 curl-‘无法使用字符串索引数字’

我正在尝试使用 jq 过滤 curl 请求以获取特定字段并将它们放入变量中。最初,我使用的是这样的基本 curl 请求:

myResponse=$(curl -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=TEST")

我提供了我的用户名和密码,并获取了“TEST”一词出现的次数,该计数以漂亮的 JSON 格式返回。此响应被放入名为 myResponse 的变量中。

我使用 jq 对其进行过滤,从 json 中获取特定的计数值:

count=`echo $myResponse | jq -r '.count'`

这很有效,并为我提供了一个号码。

所以现在我想做一些实验。除了从 curl 请求中获取响应外,我还想检索响应代码(200、404 等)。因此,我将 curl 请求调整为以下内容:

myResponse=$(curl --write-out %{http_code} --silent -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=DEBUG")

这成功返回了 JSON 响应,然后将 http 响应代码作为数字返回。

但是,一旦将其传递到 jq,我就会收到以下错误:

jq: error: Cannot index number with string

我该如何解决此错误?当它只是 json 时,jq 可以很好地处理它,但是一旦将此响应代码添加到末尾,它就无法解析它。

谢谢

答案1

我传入 jq 的变量中既有 JSON 也有 HTTP。首先必须使用tailand将变量拆分为 JSON 和 HTTP head。一旦我将纯 JSON 传入 jq,它就可以正常工作。

相关内容