我有一个像这样的json,我想为文件中的每一行添加一个line 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"
},
答案 0 :(得分:0)
使用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" } ]
还请注意,如本excellent SO answer所述,可能需要将(Get-Content $file | ConvertFrom-Json)
用括号括起来。
答案 1 :(得分:0)
由于您的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" } ]