PowerShell中如何遍历API JSON响应的PSObject并访问属性
解决PowerShell中遍历API返回JSON的value数组问题
问题分析
你当前代码的核心错误在于:
Invoke-RestMethod默认会自动将JSON响应转换为PowerShell对象,不需要额外调用ConvertTo-Json,这一步反而把对象转回了JSON字符串,导致后续无法直接访问属性。- 后续尝试的代码中,你又错误地对JSON字符串使用
ConvertTo-Json(应该用ConvertFrom-Json把字符串转回对象),但这完全是多余的步骤。
正确代码实现
直接使用Invoke-RestMethod返回的对象即可:
# 直接接收转换后的PowerShell对象,无需ConvertTo-Json $response = Invoke-RestMethod -Uri $paymentJournalUri -Method 'GET' -Headers $headers # 遍历value数组,访问每个元素的属性 $response.value | ForEach-Object { Write-Host $_.journalDisplayName # 也可以访问其他属性,比如: # Write-Host $_.id # Write-Host $_.vendorId }
补充说明
如果确实需要查看原始JSON格式的响应,可以在获取对象后单独转换(添加-Depth参数避免嵌套对象被截断):
# 仅用于查看JSON格式输出 $response | ConvertTo-Json -Depth 10 | Write-Host
内容的提问来源于stack exchange,提问作者dmikester1
相关产品推荐
相关产品推荐

