在 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=]这一步,当设计者只允许我访问父节点时?
我正在构建一个逻辑应用程序:
- 从外部系统
接收人员列表并将其解析为JSON数据
- 构造一个具有不同结构的新JSON文件
- 将新文件发布到第二个外部系统
来自项目 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']"
}
]
}
请注意,设计器视图不允许在代码中指定后对更复杂的选择进行修改。
TL;DR 如何在 Azure 逻辑应用程序的 ParseJSON > For Each[ 中指定特定的 JSON 节点 属性 =38=]这一步,当设计者只允许我访问父节点时?
我正在构建一个逻辑应用程序:
- 从外部系统 接收人员列表并将其解析为JSON数据
- 构造一个具有不同结构的新JSON文件
- 将新文件发布到第二个外部系统
来自项目 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']"
}
]
}
请注意,设计器视图不允许在代码中指定后对更复杂的选择进行修改。