[英]Add key value pair to json file with powershell
我有一個這樣的 json,我想為文件中的每一行添加一行 key:value。
例如,在大括號前添加一個逗號和值 KC-NA-asplan-PROJECTS-DEV-01。
[
{
"name": "/subscriptions/uifaghy78923/resourceGroups/KC-NA-RSGP-PROJECTS-DEV-01/providers/Microsoft.Web/serverfarms/KC-NA-asplan-PROJECTS-DEV-01"
},
{
"name": "/subscriptions/uifaghy78923/resourceGroups/KC-NA-RSGP-PROJECTS-DEV-01/providers/Microsoft.Web/serverfarms/KC-NA-asplan-PROJECTS-DEV-02"
}
]
$file="pathtojson"
$jsonContent = Get-Content $file | ConvertFrom-Json;
$appserviceplan= $jsonContent.name;
foreach ($app in $appserviceplan) {
$app.Split('/')[8]
}
我想在每一行中添加相應的 $app.Split('/')[8] 以便有
"name": "/subscriptions/uifaghy78923/resourceGroups/KC-NA-RSGP-PROJECTS-DEV-01/providers/Microsoft.Web/serverfarms/KC-NA-asplan-PROJECTS-DEV-01", "value": "KC-NA-asplan-PROJECTS-DEV-01"
},
使用ConvertTo-Json
應該適合你:
(Get-Content $file | ConvertFrom-Json) |
Select-Object -Property *, @{name ="value"; expression={($_.name -split '/')[8]}} |
ConvertTo-Json |
Out-File -FilePath .\newdata.json
這從每個對象中獲取所有現有屬性(最初只是name
)並添加一個名為value
的新屬性,其值為($_.name -split '/')[8]
。
然后它使用ConvertTo-Json
將結果對象轉換回 JSON,對於您的示例數據,它最終為:
[ { "name": "/subscriptions/uifaghy78923/resourceGroups/KC-NA-RSGP-PROJECTS-DEV-01/providers/Microsoft.Web/serverfarms/KC-NA-asplan-PROJECTS-DEV-01", "value": "KC-NA-asplan-PROJECTS-DEV-01" }, { "name": "/subscriptions/uifaghy78923/resourceGroups/KC-NA-RSGP-PROJECTS-DEV-01/providers/Microsoft.Web/serverfarms/KC-NA-asplan-PROJECTS-DEV-02", "value": "KC-NA-asplan-PROJECTS-DEV-02" } ]
另請注意,可能需要將(Get-Content $file | ConvertFrom-Json)
括在括號中,如這個優秀的 SO answer 中所述。
由於您的 Json 是一個對象數組,我認為顯而易見的方法是遍歷此對象列表,並為每個對象輸出一個包括value
屬性的新對象。 最簡單的方法是使用Select-Object
。
像這樣的東西:
$file = "D:\blah.json"
$json = Get-Content $file -Raw | ConvertFrom-Json | ForEach-Object {
$_ | Select-Object name, @{Name = 'value'; Expression = {($_.name -split '/')[8]}}
} | ConvertTo-Json
$json
結果:
[ { "name": "/subscriptions/uifaghy78923/resourceGroups/KC-NA-RSGP-PROJECTS-DEV-01/providers/Microsoft.Web/serverfarms/KC-NA-asplan-PROJECTS-DEV-01", "value": "KC-NA-asplan-PROJECTS-DEV-01" }, { "name": "/subscriptions/uifaghy78923/resourceGroups/KC-NA-RSGP-PROJECTS-DEV-01/providers/Microsoft.Web/serverfarms/KC-NA-asplan-PROJECTS-DEV-02", "value": "KC-NA-asplan-PROJECTS-DEV-02" } ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.