Below is my json file:

[
   {
      "?xml": {
         "attributes": {
            "encoding": "UTF-8",
            "version": "1.0"
         }
      }
   },
   {
      "domain": [

         {
            "server": [
               {
                  "name": "myserv1"
               },
               {
                  "ssl": {
                     "name": "myserv1"
                  }
               },
               {
                  "log": [
                     {
                        "name": "myserv1"
                     },
                     {
                        "file-name": 
"/web/bea_logs/domains/mydom/myserv1/myserv1.log"
                     }
                  ]
               }
            ]
         },
         {
            "server": [
               {
                  "name": "myserv2"
               },
               {
                  "ssl": {
                     "name": "myserv2"
                  }
               },
               {
                  "log": [
                     {
                        "name": "myserv2"
                     },
                     {
                        "file-name": 
"/web/bea_logs/domains/mydom/myserv2/myserv2.log"
                     }
                  ]
               },
            ]
         }
      ]
   }
]

I wish to parse the above json and get the data like below: 

myserv1_log: /web/bea_logs/domains/mydom/myserv1/myserv1.log
myserv2_log: /web/bea_logs/domains/mydom/myserv2/myserv2.log

Below is how i try to parse the json using jmespath:

      - name: Server Names and log details
        set_fact:
          serverlog:  "{{ jsondata | json_query(jmesquery) }}"
        vars:
          jmesquery: '[].domain[].server[*].log[*].[name, "file-name"]'

      - name: Print all server names with log details

        debug:
          msg: "{{ item }}"
        with_items:
          - "{{ serverlog }}"


Issue is that I'm getting null in the output as below:

ok: [localhost] => (item=[[['myserv1', None], [None, 
'/web/bea_logs/domains/mydom/myserv1/myserv1.log']]]) => {
    "msg": [
        [
            [
                "myserv1",
                null
            ],
            [
                null,
                "/web/bea_logs/domains/mydom/myserv1/myserv1.log"
            ]
        ]
    ]
}
ok: [localhost] => (item=[[['myserv2', None], [None, 
'/web/bea_logs/domains/mydom/myserv2/myserv2.log']]]) => {
    "msg": [
        [
            [
                "myserv2",
                null
            ],
            [
                null,
                "/web/bea_logs/domains/mydom/myserv2/myserv2.log"
            ]
        ]
    ]
}

Can you please suggest ?

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/0c7ba194-dcff-4244-ad0c-999b09f3e7c4n%40googlegroups.com.

Reply via email to