Ansible JSON ошибка анализа - СБОЙ! => {"msg": "ошибка шаблона при шаблонной строке: ожидаемое имя или номер - PullRequest
1 голос
/ 08 февраля 2020

Я пытаюсь разобрать свой JSON, используя Ansible, но сталкиваюсь с проблемами. Мне нужен пин-код из JSON ответа

Мой образец JSON ответа

{
"James Params": {
"01. name": "james bond",
"02. phone": "334455667788",
"03. height": "5.10",
"04. country": "UK",
"05. pincode": "10000",
"06. city": "london",
}
}

Мой код Playbook

- name: Submit and read the JSON response
  uri:
    method: GET
    url: "http://URL_UNDER_TEST"
    return_content: yes
    headers:
      Accept: application/json
  register: response

- debug:
    msg: "{{response.json.'James Params'.'05. pincode'}}"

Я получаю ошибка ниже:

фатально: [localhost]: FAILED! => {"msg": "ошибка шаблона при шаблонной строке: ожидаемое имя или номер. Строка: {{response. json | json_query (\" James Params \ ". \" 05. pincode \ ")}}"}

Запросить помощь по этому вопросу.

1 Ответ

1 голос
/ 08 февраля 2020

Q: "пин-код из ответа JSON"

A: Задачи ниже

    - debug:
        msg: "{{ response.json['James Params']['05. pincode'] }}"
    - debug:
        msg: "{{ name }} PIN is {{ response.json[name][pincode_key] }}"
      vars:
        name: 'James Params'
        pincode_key: '05. pincode'
    - debug:
        msg: "{{ name }} PIN is {{ response.json[name][pincode_key] }}"
      vars:
        name: "{{ response.json.keys()|list|first }}"
        pincode_key: '05. pincode'
    - debug:
        msg: "{{ item }} PIN is {{ response.json[item]['05. pincode'] }}"
      loop: "{{ response.json.keys()|list }}"

дают

ok: [localhost] => {
    "msg": "10000"
}

ok: [localhost] => {
    "msg": "James Params PIN is 10000"
}

ok: [localhost] => {
    "msg": "James Params PIN is 10000"
}

ok: [localhost] => (item=James Params) => {
    "msg": "James Params PIN is 10000"
}
...