如何在PowerShell中解析Azure DevOps工作项接口返回的JSON数据
解决方法
- 调整
ConvertFrom-Json的深度参数
Azure DevOps工作项返回的fields属性下可能包含多层嵌套的自定义字段,你当前设置的-Depth 5不足以覆盖全部嵌套层级,解析时会自动截断深层内容,将深度参数调整为10或更高即可:
$result = Invoke-WebRequest -Uri $uri -Method GET -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" } -UseBasicParsing | ConvertFrom-Json -Depth 10
- 修正对象输出逻辑
直接使用Write-Host $result时,PowerShell会默认将对象序列化为简化的字符串格式,不会展示深层嵌套属性,并不代表fields属性实际为空。你可以直接访问属性验证,或者转为完整Json格式输出:
# 直接打印fields属性内容 Write-Host $result.fields # 打印完整的解析后对象内容 Write-Host ($result | ConvertTo-Json -Depth 10)
- 可选优化
你可以直接使用Invoke-RestMethod替代Invoke-WebRequest加ConvertFrom-Json的组合,该命令会自动解析接口返回的Json内容,无需手动转换,代码更简洁:
$result = Invoke-RestMethod -Uri $uri -Method GET -Headers @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" } -UseBasicParsing
内容的提问来源于stack exchange,提问作者Colin
相关产品推荐
相关产品推荐

