Преобразование JSON в новый

Есть JSON:

{
"data":[
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit icmp any any"
  },
  {
     "{#HINTS}":"0"
  },
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit ip object-group ALL any"
  },
  {
     "{#HINTS}":"580848704"
  },
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit ip host 10.3.2.1 any"
  },
  {
     "{#HINTS}":"0"
  },
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit ip host 10.2.23.2 any"
  },
  {
     "{#HINTS}":"267629"
  }
]
}

Количество {#ACLNAME} и {#HINTS} всегда разное, но они парные, то есть четное количество.

Его нужно переделать в такой вид:

{
"data":[
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit icmp any any",
     "{#HINTS}":"0"
  },
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit ip object-group ALL any",
     "{#HINTS}":"580848704"
  },
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit ip host 10.3.2.1 any",
     "{#HINTS}":"0"
  },
  {
     "{#ACLNAME}":"access-list inside line 1 extended permit ip host 10.2.23.2 any",
     "{#HINTS}":"267629"
  }
]
}

Заранее спасибо за помощь!


Ответы (1 шт):

Автор решения: ryzen

Используя самый простой цикл, можно реализовать данную задачу

const json = {
  data: [
    {
      "{#ACLNAME}": "access-list inside line 1 extended permit icmp any any"
    },
    {
      "{#HINTS}": "0"
    },
    {
      "{#ACLNAME}":
        "access-list inside line 1 extended permit ip object-group ALL any"
    },
    {
      "{#HINTS}": "580848704"
    },
    {
      "{#ACLNAME}":
        "access-list inside line 1 extended permit ip host 10.3.2.1 any"
    },
    {
      "{#HINTS}": "0"
    },
    {
      "{#ACLNAME}":
        "access-list inside line 1 extended permit ip host 10.2.23.2 any"
    },
    {
      "{#HINTS}": "267629"
    }
  ]
};

const result = { data: [] };

for (let i = 0; i < json.data.length; i += 2) {
  result.data.push({ ...json.data[i], ...json.data[i + 1] });
}

console.log(result);

→ Ссылка