问题描述
我有以下JSON,我想从数组(地址)下的JSON对象中删除街道。我正在尝试在Powershell中执行此操作
{
"Customer": [
{
"id": "123"
}
],"Nationality": [
{
"name": "US","id": "456"
}
],"address": [
{
"$type": "Home","name": "Houston","streets": [
{
"name": "Union","postalCode": "10",}
]
},{
"$type": "Office","name": "Hawai","streets": [
{
"name": "Rock","postalCode": "11",}
]
}
],"address": [
{
"$type": "Home1","streets": [
{
"name": "Union1","postalCode": "14",{
"$type": "Office1","name": "Hawaii1","streets": [
{
"name": "Rock1","postalCode": "15",}
我想从JSON对象中删除街道,这是我的powershell脚本,但是它不起作用!我正在尝试将JSON转换为对象,然后遍历属性以将其删除。
$FileContent = Get-Content -Path "Test.json" -Raw | ConvertFrom-Json
foreach ($content in $FileContent) {
#Write-Host $content.address
$content.address = $content.address | Select-Object * -ExcludeProperty streets
}
$FileContent | ConvertTo-Json -Depth 100 | Out-File "Test.json" -Force
解决方法
使用ConvertFrom-Json
时,它将自动为您将事物转换为对象。一旦它们成为对象,您就可以使用Select-Object
来指定要在管道中包含哪些属性,只需将$FileContent.address
(对象数组)设置为等于自身即可,不包括streets属性从数组中的每个对象开始。
$FileContent = Get-Content -Path "Test.json" -Raw | ConvertFrom-Json
$FileContent.address = $FileContent.address | Select-Object * -ExcludeProperty streets
$FileContent | ConvertTo-Json