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

如何在Azure ARM模板中用Copy同时生成属性名和属性值

问题描述

我有如下输入参数:

"parameters": {
    "input": {
      "type": "array",
      "defaultValue": [
        {
          "name": "globalName1",
          "value": "globalValue1"
        },
        {
          "name": "globalName2",
          "value": "globalValue2"
        }
      ]
    }
}

想创建变量globalParametersVar,让它的值变成这样:

"globalParametersVar": {
    "globalName1": {
        "type": "string",
        "value": "globalValue1"
    },
    "globalName2": {
        "type": "string",
        "value": "globalValue2"
    }  
}

现在Azure Data Factory里的globalParameters部分是硬写死的,我想基于输入数组里的名称和值动态生成这个结构,但试了Copy操作没成功。

解决方案

Copy操作没法直接把数组转成这种键值对结构,换用Set Variable活动加ADF表达式就能实现:

  • 在管道中创建一个类型为Object的变量globalParametersVar
  • 添加Set Variable活动,给变量赋值时用下面的表达式:
@json(concat('{', join(map(pipeline().parameters.input, item() => concat('"', item().name, '": {"type": "string", "value": "', item().value, '"}')), ','), '}'))

表达式说明:

  • map(pipeline().parameters.input, item() => ...):遍历输入数组,将每个元素转换为指定格式的键值对字符串
  • join(..., ','):将所有键值对字符串用逗号连接,形成对象内部的键值对集合
  • concat('{', ..., '}'):将拼接好的键值对集合包裹成完整的JSON对象格式字符串
  • @json(...):将字符串转换为JSON对象类型,最终赋值给目标变量

这样就能根据输入数组动态生成目标结构,替代硬编码的globalParameters部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:17:26