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

调用Azure DevOps API时如何传递含多值的对象参数

Azure DevOps REST 6.0 接口流水线object类型参数传参方案

报错原因说明

  • 第一次传字符串值报Expected a sequence or mapping. Actual value 'image1':是接口参数类型校验的正常反馈,你在流水线中定义的images参数为object类型、默认值是数组序列,接口要求该参数传入值必须匹配序列/映射结构,字符串不符合类型要求。
  • 第二次传原生JSON数组报所有参数parameter must be provided.:是6.0版本REST接口的固有规则限制——该版本接口的templateParameters字段仅接受字符串类型的键值对,不支持直接传入数组、嵌套对象这类原生结构化JSON值。一旦传入非字符串类型的值,接口的参数解析器会判定整个templateParameters结构非法,直接忽略你传入的所有字段,最终抛出全量参数未提供的错误。

正确传值方式

针对数组/对象类型的template参数,你需要将目标值转换为YAML格式的序列化字符串后传入,不要直接传原生JSON结构:

  • 单元素数组场景(仅传image1),请求体配置如下:
"templateParameters": {
    "images": "- image1"
}
  • 多元素数组场景(传image1、image4两个值),用\n分隔YAML数组项即可:
"templateParameters": {
    "images": "- image1\n- image4"
}
  • 键值对映射类型的object参数同理,传入YAML对象格式的字符串即可,例如镜像与版本的映射参数:
"templateParameters": {
    "imageVersions": "image1: v1\nimage2: v2"
}

注意事项

  • 序列化后的YAML字符串不需要额外包裹外层引号,接口会自动将字符串反序列化为对应结构注入流水线,流水线中通过${{ parameters.images }}拿到的是原生数组/对象,可以直接用each关键字遍历,不会被识别为普通字符串。
  • 该传参规则仅适用于azure-devops-rest-6.0版本接口,7.0及以上版本的接口已经修复该限制,可以直接传入原生结构化JSON值,不需要做YAML字符串转换。

内容的提问来源于stack exchange,提问作者PANDA MAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:46:07