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

Power Apps如何将标准JSON数组传递给Power Automate Flow?

背景

我目前正在开发一款基于Power Apps的专用搜索引擎前端,需要通过Power Automate Flow将字符串数组传递给后端服务以指定筛选条件。

Flow格式要求

Flow接收的输入是一个JSON对象,会直接透传给后端服务,格式示例如下:

{
    "service": "string",
    "types": ["A", "B", "C", ...]
}
遇到的问题

Power Apps不支持直接创建原生数组,使用JSON()函数序列化对象时,会自动给单值数组元素包裹Value字段,得到的输出不符合要求,示例如下:

{
    "service": "string",
    "types": [{"Value" : "A"}, {"Value" : "B"}, {"Value" : "C"}, ...]
}
已尝试的无效方案
  • Collect(arrayTypes; ["A", "B", "C", ...])
  • ClearCollect(arrayTypes; ["A", "B", "C", ...])
  • Set(arrayTypes; ["A", "B", "C", ...])
  • Set(arrayTypes; JSON(["A", "B", "C", ...]))
  • Set(arrayTypes; JSON(["A", "B", "C", ...].Value))
  • JSON(ForAll(arrayTypes.Value; ThisRecord.Value))

之前考虑将数组转为逗号分隔字符串传递再在Flow中重构,但需要大幅修改现有Flow逻辑(多数组传递场景下改造成本高),希望尽量不改动现有Flow的核心逻辑。

可行解决方案

下面给出两种适配方案,均无需大规模修改现有逻辑:

方案1:Power Apps端直接生成标准JSON(无需修改Flow)

通过字符串替换消除JSON()函数自动添加的冗余字段,步骤如下:

  1. 先正常生成携带Value字段的原始JSON串:
Set(RawJson, JSON({
    service: "你的业务服务名",
    types: arrayTypes
}))
  1. 两层替换清除冗余结构:
Set(StandardJson, 
    Substitute(
        Substitute(RawJson, """Value"":", ""),
        "},{", ","
    )
)

注意:该方案适用筛选值不含},{"、"Value":特殊字符的场景,无特殊字符时输出完全符合JSON规范,可直接传给Flow透传后端。

方案2:Flow端轻量处理(更稳妥,无特殊字符兼容问题)

无需修改Flow核心透传逻辑,仅需在接收Power Apps参数后新增一步轻量转换:

  1. 添加「数据操作」分类下的Select操作
  2. 「输入」选择Power Apps传递过来的types数组参数
  3. 切换映射的「文本模式」,输入表达式item()?['Value']
  4. 后续透传给后端的逻辑中,直接使用Select操作的输出即可,完全兼容原有逻辑

两种方案均可根据你的业务场景选择,均不需要将数组转为逗号分隔字符串再重构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:54:03