Powershell如何逐个访问对象成员并生成JSON发起接口请求
PowerShell循环遍历对象成员并逐个生成JSON请求的解决方案
你代码的核心问题是在ForEach-Object循环中仍然调用了整个$l_rules数组转JSON,没有获取当前遍历到的单个对象。修正逻辑如下:
核心修正点
- 循环内使用PowerShell内置变量
$_指代当前迭代的单个对象成员,替换原代码中的$l_rules - 不要手动拼接JSON字符串,改用哈希表构造请求体后统一转JSON,避免转义错误
- 转换JSON时添加
-Depth参数,防止默认2层嵌套限制导致内容截断
修正后代码
$l_rules | ForEach-Object { Write-Host "Output from rules objects in a cycle" # 构造标准请求体结构 $request_body = @{ rule = $_ } | ConvertTo-Json -Depth 10 Write-Host "Actual json BODY:" Write-Host $request_body $response_t = Invoke-Restmethod -Uri $api_uri_t -Method POST -Headers $headers -ContentType 'application/json' -UseBasicParsing -Body $request_body }
额外说明
如果你确实需要手动拼接JSON字符串,要注意去掉外层多余的单引号,Invoke-RestMethod的Body参数直接接收标准JSON格式字符串即可,额外的单引号会被识别为请求内容的一部分,导致接口返回格式错误。
内容的提问来源于stack exchange,提问作者Georgi Gochev
相关产品推荐
相关产品推荐

