簡體   English   中英

使用powershell將鍵值對添加到json文件中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM