PowerShell中ConvertTo-JSON返回嵌套对象的POST请求问题
解决PowerShell POST请求JSON转换后的嵌套对象异常问题
嘿,这问题我之前踩过一模一样的坑!你遇到的嵌套对象异常主要是PowerShell处理JSON和Web请求时的两个常见小坑导致的,咱们一步步来搞定:
问题根源拆解
- 缺失JSON请求头:
Invoke-WebRequest默认不会自动设置Content-Type: application/json,服务器收到请求后可能把你的JSON字符串当成普通表单数据解析,直接导致结构识别混乱。 ConvertTo-Json默认深度不足:PowerShell的ConvertTo-Json默认只处理2层深度的对象,哪怕你的参数里只是Img这种带换行的文本,都可能被意外转成嵌套的@{...}结构,服务器自然没法正确解析。
修正后的完整代码
把这两个坑补上,代码就能正常工作了:
$postParams = @{ Login = "JonSnow66" Password = "LetItSnow" Email = "Jon.Snow@wall.com" Name = "Jon Snow" Desc = "I know nothing" BirthDate = "1572 2 16" Img = Get-Content -Path ./PH_img.txt | Out-String Type = "Admin" } # 关键修改:添加JSON请求头,给ConvertTo-Json设置足够大的深度参数 Invoke-WebRequest -Uri http://localhost:3000/api/add/user ` -Method POST ` -ContentType "application/json" ` -Body (ConvertTo-Json $postParams -Compress -Depth 10)
额外验证小技巧
你可以先单独执行ConvertTo-Json $postParams -Depth 10查看输出的JSON结构,确认没有出现@{Value=...}这类奇怪的嵌套对象,再发送请求,这样能提前排查转换环节的问题。
内容的提问来源于stack exchange,提问作者LastShadowPL
相关产品推荐
相关产品推荐

