asking
asking

Reputation: 305

Parsing JSON Ansible returns undefined value

This is the JSONcontent I registered:

results:[{
    "json": {
        "item": {
            "param": [
            [
               {
                "metrics1": "A",
                "metrics2": "B"
                "metrics3": "C"
              },
               {
                "metrics1": "D",
                "metrics2": "E"
                "metrics3": "F"
              },
               {
                "metrics1": "G",
                "metrics2": "H"
                "metrics3": "I"
              }
            ],
            [
               {
                "metrics1": "J",
                "metrics2": "K"
                "metrics3": "L"
              },
               {
                "metrics1": "M",
                "metrics2": "N"
                "metrics3": "O"
              },
               {
                "metrics1": "P",
                "metrics2": "Q"
                "metrics3": "R"
              }
            ],
           ],
         }
    }
}
]
        
        
        

I want to get metrics2 and metrics3 as a table where metrics2 value as column1 and metrics3 value as column2

I try parsing metrics2 first but it returns undefined value like this

"parseJSON_list": "[AnsibleUndefined, AnsibleUndefined, AnsibleUndefined]"

What I tried is:

parseJSON: "{{ JSONcontent['results'] | map(attribute='json') | map(attribute='item') | map(attribute='param') | map(attribute= 'metrics2') | list }}"

It works fine until map(attribute= 'metrics2')

What should I do?

Upvotes: 1

Views: 139

Answers (1)

Vladimir Botka
Vladimir Botka

Reputation: 68024

Q: "Table where metrics2 value as column1 and metrics3 value as column2."

A: For example,

tab_m2_m3: "{{ param|json_query('[][].[metrics2, metrics3]') }}"

gives

  tab_m2_m3:
    - [B, C]
    - [E, F]
    - [H, I]
    - [K, L]
    - [N, O]
    - [Q, R]

Example of a complete playbook

- hosts: localhost

  vars:
    param:
      - - {metrics1: A, metrics2: B, metrics3: C}
        - {metrics1: D, metrics2: E, metrics3: F}
        - {metrics1: G, metrics2: H, metrics3: I}
      - - {metrics1: J, metrics2: K, metrics3: L}
        - {metrics1: M, metrics2: N, metrics3: O}
        - {metrics1: P, metrics2: Q, metrics3: R}
    tab_m2_m3: "{{ param|json_query('[][].[metrics2, metrics3]') }}"

  tasks:
    - debug:
        var: tab_m2_m3

Upvotes: 1

Related Questions