Если у меня есть немного JSON, как это:
$inputJson = @"
{
"attachments" :
[
{
"name": "attachment.eml",
"attachment_url": "https://www.attachment1.com"
},
{
"name": "attachment.eml",
"attachment_url": "https://www.attachment2.com"
},
{
"name": "attachment.eml",
"attachment_url": "https://www.attachment3.com"
}
]
}
, где есть массив attachments
, и каждый элемент в этом массиве имеет одно и то же имя, но разные URL-адреса, как я могу изменить все имена так, чтобы он выводил так:
$outputJson = @"
{
"attachments" :
[
{
"name": "(attachment.eml)[1].eml",
"attachment_url": "https://www.attachment1.com"
},
{
"name": "(attachment.eml)[2].eml",
"attachment_url": "https://www.attachment2.com"
},
{
"name": "(attachment.eml)[3].eml",
"attachment_url": "https://www.attachment3.com"
}
]
}
"@
, который переименовывает каждое вложение для предотвращения дублирования имен, но сохраняет URL-адреса.
В идеале код также должен убедиться, что ни одно из новых имен уже не существует в массиве. Поэтому, если в массиве уже есть вложение с именем (attachment.eml)[1].eml
, оно также справится с этим.
Я думал о том, чтобы как-то использовать Group-Object
, но я не совсем понял, как заставить это работать.