【发布时间】:2020-03-22 06:07:39
【问题描述】:
我确实调用了休息方法并将输出存储在变量 $a 中并使用了 convertTo-json,我想删除不需要的变量和值。 我使用了 $a -replace "variables" -replace "value" 但它不起作用
【问题讨论】:
标签: json powershell
我确实调用了休息方法并将输出存储在变量 $a 中并使用了 convertTo-json,我想删除不需要的变量和值。 我使用了 $a -replace "variables" -replace "value" 但它不起作用
【问题讨论】:
标签: json powershell
不要尝试将 JSON 作为文本(作为字符串)来操作。
转换表示Invoke-RestMethod 返回的输入 JSON 的 _objects([pscustomobject] 实例)更容易、更健壮:
# 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 使用member-access enumeration 返回一个包含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"
}
]
【讨论】: