逻辑应用程序:如何使用每个循环合并多个响应
Logic app : How to merge multiple response using each loop
我正在使用 1 个第 3 方服务,该服务一次提供 500 条记录,但我希望在单个请求中将所有记录放在一起。我已经使用 Each loop 集成了那部分,这就是我的 for each loop 的样子
当我尝试使用 Array 获取所有响应时,数据没有结构化,Array 附加了整个 JSON 哪个响应作为对象,看起来像这样
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
object 1
}]
},
{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
object 2
}]
}]
现在我想要的是
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
object 1
},
{
object 2
},
{
object 3
}
}]
我不知道如何在逻辑应用程序中合并这些数据,有人可以指导如何做到这一点
你没有显示你的流程细节,所以你可以参考我下面的流程。为了模拟你的情况,我使用 http 触发器来获取 json 数据。下面是我的测试json数据。如果这不是您想要的,请随时告诉我。
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 0,
"lookup": "PSI"
}]
},
{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 1,
"lookup": "CLEAN"
}]
}]
首先我从触发器主体解析json数据,初始化一个数组变量来存储格式化后的数组。
然后循环json数据,格式化数组。如果你所有的 data
属性 在数组中只有一个对象 json,你可以在数组后面附加 items('For_each')['data'][0]
,否则你需要另一个 For each
来循环data
数组。
然后得到你想要的结果 json 值,因为你只想要一个 json 对象并且你的 json 值是相同的,除了 data
属性.所以我使用 compose
动作来表示 json。我用 setProperty(body('Parse_JSON')[0],'data',variables('array'))
.
设置值
这是我的测试结果,希望这是你想要的。
更新:如果我没有误解,你的数据数组有多个对象,你想得到所有的对象,如果正确就像你提到的那样你需要另一个For each
action 循环数组,然后将它们全部追加到变量中,你可以参考下面的流程。
所有其他操作相同,在存在的For each
中添加一个For each
。
这是我的测试结果。下面是我发送到逻辑应用程序的 json 数据。
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 0,
"lookup": "PSI"
},{
"count": 3,
"lookup": "TEST"
}]
},
{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 1,
"lookup": "CLEAN"
},{
"count": 4,
"lookup": "GET"
}]
}]
Update2:下面是我的测试json和结果:
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
[
{ "count" : 0, "lookup": "test0" },
{ "count": 1, "lookup": "test1" }
],
[
{ "count": 2, "lookup": "test2" },
{ "count": 3, "lookup": "test3" }
]
]
},{
"total": 628,
"start": 0,
"count": 500,
"data": [
[
{ "count" : 4, "lookup": "test4" },
{ "count": 5, "lookup": "test5" }
],
[
{ "count": 6, "lookup": "test6" },
{ "count": 7, "lookup": "test7" }
]
]
}]
只需为每个动作加一个。
更新:要发送带有 json 数据的 http 响应,您可以使用 Response 操作来完成。
我正在使用 1 个第 3 方服务,该服务一次提供 500 条记录,但我希望在单个请求中将所有记录放在一起。我已经使用 Each loop
当我尝试使用 Array 获取所有响应时,数据没有结构化,Array 附加了整个 JSON 哪个响应作为对象,看起来像这样
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
object 1
}]
},
{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
object 2
}]
}]
现在我想要的是
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
object 1
},
{
object 2
},
{
object 3
}
}]
我不知道如何在逻辑应用程序中合并这些数据,有人可以指导如何做到这一点
你没有显示你的流程细节,所以你可以参考我下面的流程。为了模拟你的情况,我使用 http 触发器来获取 json 数据。下面是我的测试json数据。如果这不是您想要的,请随时告诉我。
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 0,
"lookup": "PSI"
}]
},
{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 1,
"lookup": "CLEAN"
}]
}]
首先我从触发器主体解析json数据,初始化一个数组变量来存储格式化后的数组。
然后循环json数据,格式化数组。如果你所有的 data
属性 在数组中只有一个对象 json,你可以在数组后面附加 items('For_each')['data'][0]
,否则你需要另一个 For each
来循环data
数组。
然后得到你想要的结果 json 值,因为你只想要一个 json 对象并且你的 json 值是相同的,除了 data
属性.所以我使用 compose
动作来表示 json。我用 setProperty(body('Parse_JSON')[0],'data',variables('array'))
.
这是我的测试结果,希望这是你想要的。
更新:如果我没有误解,你的数据数组有多个对象,你想得到所有的对象,如果正确就像你提到的那样你需要另一个For each
action 循环数组,然后将它们全部追加到变量中,你可以参考下面的流程。
所有其他操作相同,在存在的For each
中添加一个For each
。
这是我的测试结果。下面是我发送到逻辑应用程序的 json 数据。
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 0,
"lookup": "PSI"
},{
"count": 3,
"lookup": "TEST"
}]
},
{
"total": 628,
"start": 0,
"count": 500,
"data": [
{
"count": 1,
"lookup": "CLEAN"
},{
"count": 4,
"lookup": "GET"
}]
}]
Update2:下面是我的测试json和结果:
[{
"total": 628,
"start": 0,
"count": 500,
"data": [
[
{ "count" : 0, "lookup": "test0" },
{ "count": 1, "lookup": "test1" }
],
[
{ "count": 2, "lookup": "test2" },
{ "count": 3, "lookup": "test3" }
]
]
},{
"total": 628,
"start": 0,
"count": 500,
"data": [
[
{ "count" : 4, "lookup": "test4" },
{ "count": 5, "lookup": "test5" }
],
[
{ "count": 6, "lookup": "test6" },
{ "count": 7, "lookup": "test7" }
]
]
}]
只需为每个动作加一个。
更新:要发送带有 json 数据的 http 响应,您可以使用 Response 操作来完成。