0

我有以下使用 API 获得的 JSON。json 有 2 个列表,1- main_roles 和 2- cc_roles。使用以下代码,我可以获得 1 个列表。但我想在下拉列表(显示,值)中获取两个列表。

如何使用 map 在 1 jq 中同时获取列表 1- main_roles 和 2- cc_roles?

JSON

{
    "invoice": {
        "invoice_id": "b494a46396e47726873708f71a71a228ba2782fa",
        "main_roles": [
            {
                "name": "Agent"
            },
            {
                "name": "Customer"
            }
        ],
        "cc_roles": [
            {
                "name": "Manager"
            }
        ]        
    }
}

JSON 代码

"select": {
  "label": "Invoice",
  "form_fields": [
    {
      "label": "Select Role",
      "id": "selectRole",
      "type": "dropdown",
      "required": true,
      "options": {
        "!pipe": [
          {
            "!http": {
              "method": "GET",
              "path": "https://api.test.com/getroles"
            }
          },
          {
            "!jq": ".invoice.main_roles | map({ display: .name , value: .name })"
          }
        ]
      }
    }
  ]
}
4

1 回答 1

1

如果要将两个列表作为单独的数组获取,只需一个接一个地调用它们,用逗号分隔,

.invoice | .main_roles, .cc_roles | map({ display: .name , value: .name })
[
  {
    "display": "Agent",
    "value": "Agent"
  },
  {
    "display": "Customer",
    "value": "Customer"
  }
]
[
  {
    "display": "Manager",
    "value": "Manager"
  }
]

演示

如果您希望将它们组合成一个数组,请使用以下命令将它们加在一起+

.invoice | .main_roles + .cc_roles | map({ display: .name , value: .name })
[
  {
    "display": "Agent",
    "value": "Agent"
  },
  {
    "display": "Customer",
    "value": "Customer"
  },
  {
    "display": "Manager",
    "value": "Manager"
  }
]

演示

于 2022-02-07T20:27:46.630 回答