TL; DR,当设计者仅允许我访问父节点时,如何在Azure Logic Apps的 ParseJSON> For Each 步骤中指定特定的JSON节点属性?> strong>
我正在构建一个逻辑应用程序,
第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吗?
答案 0 :(得分:2)
如果我没记错的话,您可以在Parse_JSON()['EmployeeId']['DisplayValue']
行中做某事<-这可能不是完全匹配,但是语法是类似的。
它们的实现方式是在代码视图中编写代码,或者在设计器中从表达式开始,添加具有动态内容的空格,然后添加['DisplayValue']标签结束。
答案 1 :(得分:1)
要支持AdAstra的意见并提供规范答案,以备将来参考...
ForEach
块具有误导性,实际上并不是必需的。相反,需要一个Select
块,但是必须在代码视图中对其进行编辑(如@AdAstra所建议),以挑选所需的字段:
我仍然需要弄清楚将输出包装在所需的结构中,并在解决该问题时进行更新。事实证明,由于代码的原因,将JSON转换为新结构也非常简单视图。我只是在现有逻辑周围指定了所需的输出:
"from": "@body('Parse_JSON')?['Result']",
"select": {
"Option1": "Value1",
"Option2": "Value2",
"People": [
{
"Email": "@item()['EmailId']['DisplayValue']",
"FirstName": "@item()['FirstName']['DisplayValue']"
}
]
}
请注意,在代码中指定了更复杂的选择后,Designer View不允许对其进行修改。