How to merge two array[mapItem1,mapItem2,...] into one in YAML

31 Views Asked by At

The yaml file content is:

localDns1: &localDns1
  - &item1
    name: value1
    dns: value2
  - &item2
    name: value3
    dns: value4

localDns2: &localDns2
  - &item3
    name: value5
    dns: value6
  - &item4
    name: value7
    dns: value8
dns: 
  - <<: *localDns1
  - <<: *localDns2

dnsUgly: 
  - <<: *item1
  - <<: *item2
  - <<: *item3
  - <<: *item4

With the yaml above, it is generated as:

{
  localDns1: 
   [ { name: 'value1', dns: 'value2' },
     { name: 'value3', dns: 'value4' } ],
  localDns2: 
   [ { name: 'value5', dns: 'value6' },
     { name: 'value7', dns: 'value8' } ],
  DNS: 
   [ { name: 'value1', dns: 'value2' },
     { name: 'value5', dns: 'value6' } ],
  dnsUgly: 
   [ { name: 'value1', dns: 'value2' },
     { name: 'value3', dns: 'value4' },
     { name: 'value5', dns: 'value6' },
     { name: 'value7', dns: 'value8' } ] 
}

but the "DNS" i really want is:

  DNS: 
   [ { name: 'value1', dns: 'value2' },
     { name: 'value3', dns: 'value4' },
     { name: 'value5', dns: 'value6' },
     { name: 'value7', dns: 'value8' } ]

I don't want to reference *item1-4(like "dnsUgly") as it is ugly.

Any elegant way to do this?

0

There are 0 best solutions below