JMESPATH не содержит/starts_with

#jmespath

#jmespath

Вопрос:

 {
  "data": {
    "edges": [
      {
        "node": {
          "id": "ABC12345",
          "tags": [
            {
              "name": "Dummy"
            },
            {
              "name": "HelloT"
            }
          ]
        }
      },
      {
        "node": {
          "id": "XYZ123",
          "tags": [
            {
              "name": "Testing"
            },
            {
              "name": "Test"
            }
          ]
        }
      }
    ]
  }
}
  

Я хотел бы использовать jmespath для приведенного выше json: верните узел, если node.tags[].name не содержит Hello* (starts_with)

Я попробовал следующее

 (data.edges[].node)[? (tags[])[? !starts_with(name, 'Hello')  ] ]
  

Однако он по-прежнему возвращает первый узел, потому что он имеет tags.name == ‘Пустышка’

Любой совет?

Ответ №1:

Столкнулся с тем же; оказывается, обертывание команды (в вашем случае, starts_with ) в круглых скобках должно сработать.

(data.edges[].node)[? (tags[])[? !(starts_with(name, 'Hello')) ] ]