You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline中JSON数据跨Job传递失败问题求助

问题分析与解决

问题原因

核心问题在于Invoke-WebRequest返回的是WebResponse对象,而非直接的JSON字符串。直接将这个复杂对象赋值给输出变量时,Azure Pipelines无法正确序列化,导致变量传递到Job B后为空。

修复步骤

  1. 在Job A中提取纯JSON文本:获取响应的Content属性,这才是接口返回的实际JSON内容。
  2. 在Job B中解析JSON字符串:传递过来的是文本格式,需要先转换成PowerShell对象才能访问属性。

修改后的完整YAML代码

jobs:
  # Set an output variable from job A
  - job: A
    steps:
    - powershell: |
        # 获取响应的纯JSON文本,而非整个WebResponse对象
        $response = Invoke-WebRequest https://raw.githubusercontent.com/Sitecore/docker-images/master/tags/sitecore-tags.json
        $image_info = $response.Content
        Write-Host "获取到的JSON内容:$image_info"
        # 将JSON字符串赋值给输出变量
        Write-Host "##vso[task.setvariable variable=myOutput_currentDate;isoutput=true]$image_info"
      name: setvarStep
    
  # Map the variable into job B
  - job: B
    dependsOn: A
    variables:
      myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutput_currentDate'] ]  
    steps:
    - powershell: |
        # 将字符串转换为PowerShell对象
        $jsonObject = $myVarFromJobA | ConvertFrom-Json
        # 访问对象属性
        Write-Host "JSON对象的Name属性值:$($jsonObject.Name)"

关键说明

  • Job A中:$response.Content提取了接口返回的纯JSON文本,确保输出变量存储的是可正常传递的字符串格式。
  • Job B中:通过ConvertFrom-Json将文本转为PowerShell对象后,才能正常访问.Name这类对象属性。

内容的提问来源于stack exchange,提问作者Marccelus T Enoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:48:16