使用jq在json中打印出多个元素

时间:2017-05-17 16:56:22

标签: json jq

我试图让jq同时返回keyname和isAvailable值。此产品目前在API返回的每个区域都不可用,因此我希望能够返回如下内容:

[
  "AMSTERDAM03,
  "1"
]

这是API调用返回的json。

[
    {
        "description": "AMS03 - Amsterdam",
        "keyname": "AMSTERDAM03",
        "location": {
            "location": {
                "id": 814994,
                "longName": "Amsterdam 3",
                "name": "ams03",
                "statusId": 2
            },
            "locationPackageDetails": [
                {
                    "isAvailable": 1,
                    "locationId": 814994,
                    "packageId": 737
                }
            ]
        },
        "sortOrder": 2
    }
]

如果我运行jq '.[] | .keyname'我得到了预期值,但我似乎无法弄清楚挖掘到较低层的语法。

1 个答案:

答案 0 :(得分:1)

如下所示的简单jq过滤器就足够了,

command-producing-json | jq '.[] | [ .keyname, .location.locationPackageDetails[].isAvailable ]'

会按预期产生。

[
  "AMSTERDAM03",
  1
]

您可以使用-r--raw-output选项丢失双引号。