遍历对象数组并提取特定值

时间:2019-09-27 15:48:38

标签: json bash sh jq

{
    "items": [
        {
            "id": "12sd31sd",
            "name": "test1",
            "createdDate": 1554894979,
        },
        {
            "id": "sz978z7",
            "name": "test2",
            "createdDate": 1569595456,
        },
        {
            "id": "sd213sd121",
            "name": "test1",
            "createdDate": 1569592293,
        },
        {
            "id": "c4556c456c",
            "name": "test1",
            "createdDate": 1569592293,
        }
    ]
}

我想遍历此数组中的每个对象,并选择每个值名称“ test1”的ID。

此刻我对

有误解

不知道如何在jq内读取变量。

1 个答案:

答案 0 :(得分:0)

这是一个假设test.json

中已更正json的示例
$ jq -M    '.items[] | select(.name == "test1") | .id' test.json
"12sd31sd"
"sd213sd121"
"c4556c456c"

您可以使用-r排除引号,例如

$ jq -M -r '.items[] | select(.name == "test1") | .id' test.json
12sd31sd
sd213sd121
c4556c456c