我有一个Invoke-RestMethod的参数部分,我必须保持原样,但也添加了参数:
$param = @{
...
Body = '{"entry":[{"@name":SOMETEXT,"static":{"member":[ANOTHERTEXT]}}]}'
...
}
由于整个Body
都在单引号中,添加的任何$parameter
都将被视为字符串而不是普通的PowerShell参数
在这种情况下,SOMETEXT
和ANOTHERTEXT
将分别为$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]"}}]}