On Fri, 7 Feb 2020 08:14:56 -0800 (PST)
jean-christophe manciot <[email protected]> wrote:

> I receive some json data which *sometimes* start with the first key within 
> "json_data" variable containing a ':', such as:
> "json_data": {
>     "key1:key2": {
>         "key3": [
>             "value31",
>             "value32",
>             "..."
>         ]
>     }
> }
> 
> The goal is to split "key1:key2" into 2 keys so that we end up with:
> "json_data": {
>     "key1": {
>         "key2": {
>             "key3": [
>                 "value31",
>                 "value32",
>                 "..."
>             ]
>         }
>     }
> }


Try this

   - set_fact:
        json_data1: "{{ json_data1|default({})|combine(my_key) }}"
      vars:
        my_keys: "{{ item.key.split(':') }}"
        my_keys_length: "{{ my_keys|length == 1 }}"
        my_key: "{{ my_keys_length|
                    ternary({my_keys[0]: item.value},
                            {my_keys[0]: {my_keys[1:]|join(':')|default('NA'):
                                         item.value}}) }}"
      loop: "{{ json_data|dict2items }}"

HTH,

        -vlado

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/20200207191221.653086f7%40gmail.com.

Attachment: pgpAU84ovpxPz.pgp
Description: OpenPGP digital signature

Reply via email to