如何将powershell Invoke-RestMethod主体从原始格式更改为其他格式



我有一个Invoke-RestMethod的参数部分,我必须保持原样,但也添加了参数:

$param = @{
...
Body = '{"entry":[{"@name":SOMETEXT,"static":{"member":[ANOTHERTEXT]}}]}' 
...
}

由于整个Body都在单引号中,添加的任何$parameter都将被视为字符串而不是普通的PowerShell参数

在这种情况下,SOMETEXTANOTHERTEXT将分别为$HubAddressObject$ArrayList

如何使Body条目与参数一起工作,并保持相同的结构(这是全景框的一部分)?

我需要的是:

Body = '{"entry":[{"@name":$HubAddressObject,"static":{"member":[$ArrayList]}}]}'

谢谢。

我建议使用ConvertFrom-Json/ConvertTo-Json

要保持为1行,可以使用-Compress开关。

$params = @{
Body = '{"entry":[{"@name":"SOMETEXT","static":{"member":"[ANOTHERTEXT]"}}]}' 
}
# Create a PSObject representation of your JSON
$jsonObj = $Params.body | ConvertFrom-Json
#Modify whatever you want
$jsonObj.entry[0].'@name' = 'NewText'
# Convert the Object back to Json.
$Params.Body = $JsonObj | Convertto-Json -Compress -Depth 4

Json比较

# Starting off Json
{"entry":[{"@name":"SOMETEXT","static":{"member":"[ANOTHERTEXT]"}}]}
# Modified JSON
{"entry":[{"@name":"NewText","static":{"member":"[ANOTHERTEXT]"}}]}

相关内容

最新更新