在 Azure 逻辑应用程序中 parsing/iterating 时如何指定 JSON 节点 属性 值?

How to specify JSON node property values when parsing/iterating in Azure Logic Apps?

TL;DR 如何在 Azure 逻辑应用程序的 ParseJSON > For Each[ 中指定特定的 JSON 节点 属性 =38=]这一步,当设计者只允许我访问父节点时?

我正在构建一个逻辑应用程序:

  1. 从外部系统
  2. 接收人员列表并将其解析为JSON数据
  3. 构造一个具有不同结构的新JSON文件
  4. 将新文件发布到第二个外部系统

来自项目 1 的 JSON 响应具有以下结构:

{
    "Success": true,
    "Message": "Completed",
    "Result": [
        {
            "EmployeeId": {
                "DisplayValue": "PW123",
                "FieldHistory": []
            },
            "EmailId": {
                "DisplayValue": "*****.*****@******.co.uk",
                "FieldHistory": []
            }
        },
        {
            "EmployeeId": {
                "DisplayValue": "PW789",
                "FieldHistory": []
            },
            "EmailId": {
                "DisplayValue": "*****.*****@******.co.uk",
                "FieldHistory": []
            }
        },
        .... removed for brevity
    ]
}

在设计器中,如果我添加 Data Operations > Parse JSON > For Each 步骤,它可以让我指定属性,但级别太高:

注意设计师给了我 EmployeeId,但我实际上需要 EmployeeId.DisplayValue,它是 JSON 格式的属性及其值,而不是仅包含 EmployeeId 的简单字符串或 EmailId 值。

JSON 可以使用设计器在我需要的更深层次上阅读吗?

如果我没记错的话,你可以在 Parse_JSON()['EmployeeId']['DisplayValue'] <-- 这行中做一些事情,这可能不是完全匹配,但语法是这样的。

你这样做的方式是,你要么在代码视图中编写,要么在设计器中从表达式开始,添加带有动态内容的空白,最后添加 ['DisplayValue'] 标记。

支持 AdAstra 的输入并提供规范的答案以供将来参考...

ForEach 块具有误导性,实际上并不需要。相反,需要一个 Select 块,但随后必须在代码视图中将其编辑(如@AdAstra 所建议的那样)以 cherry-pick 所需的字段:

我仍然需要弄清楚将输出包装在我想要的结构中,并在解决后更新。 结果是将 JSON 改造成一个新的由于代码视图,结构也是 super-simple。我只是围绕现有逻辑指定了我想要的输出:

             "from": "@body('Parse_JSON')?['Result']",
             "select": {
                 "Option1": "Value1",
                 "Option2": "Value2",
                 "People": [
                     {
                         "Email": "@item()['EmailId']['DisplayValue']",
                         "FirstName": "@item()['FirstName']['DisplayValue']"
                     }
                  ]
             }

请注意,设计器视图不允许在代码中指定后对更复杂的选择进行修改。