jq:解析并显示 JSON 中的多个值

jq: parse and display multiple values in JSON

我有这个 test.json 文件

{
  "list": [
    {
      "expand": "xx",
      "id": "xxxxx",
      "self": "https",
      "key": "test-11",
      "fields": {
        "field_1": "1234"
      }
    },
    {
      "expand": "xx",
      "id": "xxxxx",
      "self": "https",
      "key": "test-10",
      "fields": {
        "field_1": "1235",
        "field_2": null
      }
    }
  ]
}

我正在尝试使用 IFS while 循环读取值:

cat test.json| jq -r '[.list[]| ([.key]|tostring) + "," + "\(.fields| .field_1)"]|@tsv' \
| while IFS="," read -r key field_1; do
echo "$key $field_1"
curl -s https ://thisistest.com/api/$key/$field_1
done;
echo output displays only: test-11

我想获取 keyfield_1 的值,以便在 curl 请求中使用它们。

@Kev 在评论中的 jq 命令将提取您想要的值,每行每对,如下所示:

> jq -r '.list[]|[.key,.fields.field_1]|@tsv' test.json
test-11 1234
test-10 1235

您可以通过以下方式修改脚本以使每个值对发出 curl 请求。

#!/bin/bash
while read -r key field_1; do
    echo curl -s https://thisistest.com/api/$key/$field_1
done < <( jq -r '.list[]|[.key,.fields.field_1]|@tsv' test.json )

如果您对测试满意,请删除 echo