Доступ к полям, которые содержат специальный символ в json_query - PullRequest
1 голос
/ 16 января 2020

Как получить доступ к полю со специальным символом с помощью ansible фильтра json_query? Пример ввода json:

{
    "list": [{
        "name": "ZZZ",
        "_id": {
            "$oid": "5ba3c813c2dc4bf8392f8ec0"
        }
    }]
}

Мой пример кода:

- name: "Display all cluster names"
  debug:
    msg: "{{ result.json.list | json_query(\"[?name=='ZZZ']._id.$oid\") }}"

Но произойдет сбой со следующим сообщением:

fatal: [localhost]: FAILED! => {"msg": "JMESPathError in json_query filter plugin:\nBad jmespath expression: Unknown token $:\n[?name=='ZZZ']._id.$oid\n                       ^"}

1 Ответ

1 голос
/ 16 января 2020

Если имя содержит специальные символы, можно заключить атрибут в кавычки. Например,

- hosts: localhost
  vars:
    list:
      - name: "ZZZ"
        _id:
          $oid: "5ba3c813c2dc4bf8392f8ec0"
  tasks:
    - debug:
        msg: "{{ list|json_query(query) }}"
      vars:
        query: "[?name=='ZZZ']._id.\"$oid\""

дает

"msg": [
    "5ba3c813c2dc4bf8392f8ec0"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...