Power Automate 使用动态 属性 名称解析 JSON

Power Automate parse JSON with dynamic property name

我正在处理从 API 收集信息并将其加载到数据库的流程。

但是,在从 API 调用获得响应时,每个帐户的 属性 名称之一是可变的。

然后我从 API 调用中得到的模式是这样的:

{
  "type": "object",
  "properties": {
    "12305": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    }
  }
}

响应中的 属性“12305”因帐户而异。我需要在一个 运行.

中检查所有帐户

遗憾的是,无法将变量内容添加到 Parse JSON 操作的架构值中。

请问有人知道解决方案吗?

当您调用此 API 时,您有可用的帐号吗?或者您如何查询此 API?

的信息

选项 1:

假设您获得了一个您必须处理的帐号或一组帐号,您可以使用该架构并只需为帐号设置变量即可获得响应。

这是一个只有一个帐号的示例,如果您有一个数组,您只需创建一个“应用于每个”操作

这是此方法的流程运行

变量:

选项 2

如果你没有帐号,正在使用其他数据查询这个帐号的信息,那么它就变得有趣了,你必须将 API 的响应解析为字符串。幸运的是,这是一个简单的模式,所以它会是这样的:

我们从 API 获得响应后,“从 API 的 JSON 响应 1 获取帐号”操作将找到第一个双引号字符(因为我们根据模式知道只有一个 属性 )会为我们提供帐号的起始索引。然后,在“设置变量”操作中,我们搜索第二个双引号字符(结束字符串),现在我们从响应中获得了帐号。之后,我们使用您已有的模式解析响应,然后使用我们设置的变量获取整数数组。

这是此方法的流程运行

示例中显示的表达式(请注意,如果您更改操作名称,则必须更新此表达式,以便它可以匹配您的操作。此外,我没有验证来自 API 的响应)

  • 正文('Parse_JSON')?[变量('AccountNumber')]
  • substring(outputs('JSON_response'),add(indexOf(outputs('JSON_response'),'"'),1))
  • substring(输出('Get_Account_Number_from_API''s_JSON_response_1'),0,indexOf(输出('Get_Account_Number_from_API''s_JSON_response_1'),'"'))

所以针对这种情况的解决方案如下。

  1. JSON 响应需要转换为字符串。
  2. 字符串中变量account id需要替换为静态值
  3. 从输出中需要创建新的json
  4. 完成。

以下是打印筛选的步骤: final flow