Не пытайтесь манипулировать JSON как текстом (как строкой).
Проще и надежнее преобразовать _объекты ([pscustomobject]
экземпляры), представляющие ввод JSON, что Invoke-RestMethod
возвращает:
# Assume that $fromJson was obtained as follows:
# $fromJson = Invoke-RestMethod ...
$fromJson.variables | ForEach-Object {
# Replace the property values with the current value's .value property
# value.
foreach ($prop in $_.psobject.Properties) {
$_.($prop.Name) = $prop.Value.value
}
$_ # Output the modified object.
} | ConvertTo-Json
$json.variables
использует перечисление члена для возврата массива значений свойства variables
и Команда ForEach-Object
преобразует результирующие объекты, заменяя значения их свойств их значением свойства .value
.
.psobject.Properties
- способ отражения свойств любого объекта, а каждое свойство - Возвращенный информационный объект имеет свойство .Name
и .Value
.
ConvertTo-Json
преобразует измененные объекты обратно в JSON
, учитывая следующий пример JSON вход:
[
{
"variables": {
"appdata": {
"value": "x1"
},
"appinsta": {
"value": "y1"
}
}
},
{
"variables": {
"appdata": {
"value": "x2"
},
"appinsta": {
"value": "y2"
}
}
}
]
вышеупомянутые выходы:
[
{
"appdata": "x1",
"appinsta": "y1"
},
{
"appdata": "x2",
"appinsta": "y2"
}
]