On Fri, 7 Feb 2020 08:14:56 -0800 (PST)
jean-christophe manciot <
actionm...@gmail.com> 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