如何在PowerShell哈希表中正确设置数组类型的POST请求体值?
问题解决:PowerShell中构建嵌套JSON请求体的正确方式
你的PowerShell代码存在两个关键问题,导致请求失败:
错误1:meta字段取值错误
你把meta设为字符串"null",但Postman里的null是JSON空值,对应PowerShell里应该用$null,而非字符串类型的"null"。
错误2:未将哈希表正确序列化为JSON
直接将哈希表传给Invoke-WebRequest的-Body参数时,PowerShell不会自动将其转为标准JSON格式,必须手动用ConvertTo-Json处理,尤其是嵌套结构和数组的场景。
注:数组写法["space1", "space2"]在PowerShell里是正确的,问题不在数组本身。
修正后的完整代码
# 构建正确的嵌套哈希表 $Body = @{ "meta" = $null "data" = @{ "type" = "spaces_schema" "attributes" = @{ "spaces" = @("space1", "space2") # @()和[]在PowerShell里都可定义数组,效果一致 } } } # 将哈希表序列化为JSON,嵌套结构需指定足够的Depth(默认深度为2,此处需设为3) $JsonBody = $Body | ConvertTo-Json -Depth 3 # 发送POST请求,必须指定Content-Type告知服务器请求体格式 Invoke-WebRequest -Uri 'https://{URL}' -Method Post -Body $JsonBody -ContentType 'application/json'
关键说明
-Depth 3:ConvertTo-Json默认序列化深度为2,你的请求体嵌套层级为3层(data -> attributes -> spaces),必须显式指定深度避免JSON结构被截断。-ContentType 'application/json':必须添加该参数,否则服务器无法识别请求体为JSON格式,会导致解析失败。
内容的提问来源于stack exchange,提问作者PrefferedAcorn
相关产品推荐
相关产品推荐

