首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jq:在JSON中解析和显示多个值

jq:在JSON中解析和显示多个值
EN

Stack Overflow用户
提问于 2020-09-14 03:21:06
回答 1查看 741关注 0票数 0

我有这个test.json文件

代码语言:javascript
复制
{
  "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循环读取这些值:

代码语言:javascript
复制
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请求中使用它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 03:53:38

注释中@Kev的jq命令将提取您想要的值,每一行每对,如下所示:

代码语言:javascript
复制
> jq -r '.list[]|[.key,.fields.field_1]|@tsv' test.json
test-11 1234
test-10 1235

下面是如何修改脚本,使每个值对都能获得curl请求。

代码语言:javascript
复制
#!/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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63877660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档