无法解析 JMESPATH 输出的 json

Unable to parse json output by JMESPATH

我正在运行使用下面的 azure cli 命令来获取特定管理组的订阅 ID。

命令:

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r

输出:

{
  "children": [
    {
      "children": null,
      "displayName": "TestSub-ABC-Dev",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSubIdentity",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-Build-DevTest",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "Azure ITI - TestSub Pre-prod",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-IS-Demo",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-PQR-QA",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-PQR-PreProd",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    }
  ],
  "details": {
    "parent": {
      "displayName": "Simple-DMG-v01",
      "id": "/providers/Microsoft.Management/managementGroups/Simple-DMG-v01",
      "name": "Simple-DMG-v01"
    },
    "updatedBy": null,
    "updatedTime": "0001-01-01T00:00:00",
    "version": 0.0
  },
  "displayName": "Simple-NonProduction-EMG-v01",
  "id": "/providers/Microsoft.Management/managementGroups/Simple-NonProduction-EMG-v01",
  "name": "Simple-NonProduction-EMG-v01",
  "roles": null,
  "tenantId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "type": "/providers/Microsoft.Management/managementGroups"
}

我运行下面的命令但是它没有输出

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query [].[children]
az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query [].[children.children.name]
az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query [].[children.children]

没看懂

  1. 为什么我没有得到输出。
  2. 何时使用方括号而不是何时使用单引号。

以下命令也没有输出

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query 'children.children.name'

参考使用单引号: https://docs.microsoft.com/en-us/cli/azure/query-azure-cli?view=azure-cli-latest

参考使用方括号: https://adamraffe.com/azure/2017/11/22/the-wonderful-world-of-azure-cli-jmespath-queries/

非常感谢您的意见。

谢谢

尝试这样做:

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query `children`

像这样:

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query 'children[].name'