ConvertTo-Json函数异常:ancestors字段内容冗余问题
问题原因及解决方法
核心原因
你写的ancestors = {@{"id" = "$ConfluencePageId"}}里,外层的{}是PowerShell的脚本块(ScriptBlock),不是数组定义。ConvertTo-Json处理脚本块时,会把它的内部元数据(比如脚本内容、作用域信息等)一并序列化,这就导致了冗余内容的出现。
PowerShell里定义数组的正确语法是用@()包裹元素,而非{}。
修正后的代码
把ancestors的定义改成数组格式即可:
$body = @{ "type" = "page" "title" = "$Title" "ancestors" = @(@{"id" = "$ConfluencePageId"}) "space" = @{"key" = "$ConfluenceSpace"} "body" = @{"storage" = @{"representation" = "storage";"value" = "$Page"}} } | ConvertTo-Json
补充说明
如果需要在ancestors数组里添加多个元素,只需在@()内用逗号分隔哈希表:
"ancestors" = @(@{"id" = "pageId1"}, @{"id" = "pageId2"})
内容的提问来源于stack exchange,提问作者Re1ter
相关产品推荐
相关产品推荐

