如何用jq串行显示两个值?

时间:2017-07-21 08:19:29

标签: json jq

我正在用jq来解析json文件。我必须在同一行中获取ID和Name,以便我可以在之后做一些逻辑。

{
"elements": [{
        "id": "e20a9cd8-8683-4986-b6c0-e5fbf51cbf7f",
        "name": "Mike",
        "components": [{
            "id": "15f959fc-6d2d-451a-a59e-430a05a1852c",
            "pid": "ZZZ1"
        }],
        "tenantIds": null,
        "productIds": null
    },
    {
        "id": "d892f2eb-d7f3-49f8-9176-2113351cccf8",
        "name": "Steve",
        "components": [{
            "id": "0c44c917-e0e5-4fa3-b87c-89f9ac0815b4",
            "pid": "XXX3"
        }],
        "tenantIds": null,
        "productIds": null
    }
]

}

使用jq '{elements}[] | .[].id我正在获取ID,但我找不到解决方案如何在ID旁边添加适当的名称。我试过像

这样的东西
{elements}[] | .[].id + " " + .[].name 

{elements}[] | .[].id + .[].name

但这不是我的预期。

我想得到:

15f959fc-6d2d-451a-a59e-430a05a1852c Mike
d892f2eb-d7f3-49f8-9176-2113351cccf8 Steve

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

应用字符串连接:

jq '.elements[] | .id +" "+ .name' file

输出:

"e20a9cd8-8683-4986-b6c0-e5fbf51cbf7f Mike"
"d892f2eb-d7f3-49f8-9176-2113351cccf8 Steve"

要输出不带双引号,请使用-r--raw-output)选项:

jq '.elements[] | .id +" "+ .name' -r file
e20a9cd8-8683-4986-b6c0-e5fbf51cbf7f Mike
d892f2eb-d7f3-49f8-9176-2113351cccf8 Steve