JMESPath вложенный запрос И (однострочный)

Я работаю над пользовательским Azure Devops и пытаюсь заполнить свои поля через файл json. Мне удается получить данные на один слой глубиной, но два слоя кажутся сложными.

Мой источник:

{
  "Projects": [
    {
      "Name": "Phoenix",
      "CatalogItems": {
        "Name": "w2016-its",
        "id": "49e52ffe-645d-38c2-8180-a36861969132",
        "OS": [
          "W2016-LTS-DESKTOP-MGM-Latest-cloudbase"
        ]
      },
      "Products": [
        {
          "Value": "ego",
          "Function": [
            {
              "Name": "tst",
              "Value": "tst",
              "Type": "web"
            }
          ],
          "Environment": [
            {
              "Name": "Development",
              "Value": "o"
            },
            {
              "Name": "Test",
              "Value": "t"
            }
          ],
          "Customer": [
            {
              "Name": "9446",
              "Value": "9446"
            }
          ]
        }
      ]
    }
]}

Получение моего проекта (работает):

jsonpath:$.Projects[*]

Получение моих продуктов (работает):

jsonpath:$.Projects.[?(@.Name == '{{{ProjectName}}}')].Products[*]

Получение моих функций (не работает):

jsonpath:$.Projects.[?(@.Name == '{{{ProjectName}}}') && (@.Products.Value == '{{{Application}}}')].Function[*]

Все записи с {{{name}}} являются переменными.

Мне нужен однострочный текст из-за того, что Azure Devops выполняет запросы. Как я могу заставить этот вложенный запрос работать?


person Peter the Automator    schedule 14.10.2020    source источник
comment
Не уверен, но я бы посоветовал вместо этого попробовать трубку; что-то вроде jsonpath:$.Projects.[?(@.Name == '{{{ProjectName}}}') | [?(Products.Value == '{{{Application}}}')].Function[*]   -  person wp78de    schedule 14.10.2020
comment
Привет, @Peter the Automator! Вы используете службу Azure DevOps? Если да, не могли бы вы поделиться здесь определением конвейера или воспроизвести шаги? Спасибо.   -  person Vito Liu    schedule 15.10.2020


Ответы (1)


Мне удалось заставить его работать со следующей строкой:

jsonpath:$.Projects.[?(@.Name == '{{{ProjectName}}}')].Products[?(@.Value=='{{{Application}}}')].Function[*]

Надеюсь, это поможет некоторым людям в будущем :)

person Peter the Automator    schedule 26.10.2020