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

在Logic Apps中解析ADF传来的JSON字符串数组以生成状态邮件

解决Logic Apps解析ADF管道runOutput JSON字符串数组并生成状态邮件的问题

问题根源

ADF传递的runOutput是JSON字符串组成的数组,而非直接的JSON对象数组。直接尝试从字符串中选择ClientFeedID、ClientName等属性时,会触发「无法从字符串类型值选择属性」的错误——因为字符串本身没有这些属性,必须先将每个字符串转换为可操作的JSON对象。

分步解决方案

1. 解析runOutput数组结构

先用「Parse JSON」动作解析ADF传来的runOutput,明确其为字符串数组:

  • 输入:选择ADF触发传递的runOutput字段
  • Schema(可通过「Generate from sample payload」自动生成,或手动输入):
{
  "type": "array",
  "items": {
    "type": "string"
  }
}

2. 遍历并转换每个JSON字符串

添加「Apply to each」动作,遍历「Parse JSON」输出的Body(即数组中的每个字符串元素):

  • 在循环内部添加「Compose」动作,输入表达式:
json(item())

这个表达式会将字符串格式的JSON转换为Logic Apps可识别的JSON对象。

3. 提取字段并收集到数组变量

  • 先初始化一个数组类型的变量(比如命名为PipelineStatusList)
  • 在「Apply to each」的「Compose」动作之后,添加「Append to array variable」动作,将提取的字段封装为对象存入数组:
    输入内容示例:
{
  "客户端FeedID": "@outputs('Compose')?['ClientFeedID']",
  "客户端名称": "@outputs('Compose')?['ClientName']",
  "管道状态": "@outputs('Compose')?['Status']",
  "运行开始时间": "@outputs('Compose')?['RunStartTime']"
}

注:字段名可自定义,?用于避免字段不存在时触发错误。

4. 生成HTML表格并发送邮件

  • 添加「Create HTML table」动作,输入选择变量PipelineStatusList,可选择自动生成列或手动指定列映射
  • 添加「Send email(V2)」动作,在邮件正文中嵌入HTML表格,示例正文:
<p>您好,以下是ADF管道最新运行状态:</p>
@{body('Create_HTML_table')}

关键注意点

  • 必须先通过json()表达式将字符串转为JSON对象,才能提取内部属性
  • 使用数组变量收集所有条目后再生成表格,避免循环内重复生成表格导致格式混乱
  • 若runOutput中存在空字符串或无效JSON,可添加条件判断(如contains(item(), 'ClientFeedID'))过滤无效条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:45:09