Mule 将具有多个阵列的有效负载转换为单个阵列
我有一个有效载荷,我正试图压平,但运气不太好。有效载荷如下所示:Mule 将具有多个阵列的有效负载转换为单个阵列,mule,transformation,dataweave,Mule,Transformation,Dataweave,我有一个有效载荷,我正试图压平,但运气不太好。有效载荷如下所示: {payload= [xyz, [{creation: 1501535135, id: reference_1}, {creation: 225351535, id: reference_2 }] abc, [{creation: 129495124, id: reference_3
{payload=
[xyz,
[{creation: 1501535135,
id: reference_1},
{creation: 225351535,
id: reference_2 }]
abc,
[{creation: 129495124,
id: reference_3},
{creation: 151352244,
id: reference_4 }]
[{creation: 1501535135,
id: reference_1},
{creation: 225351535,
id: reference }]
[{creation: 1501535135,
id: reference_3},
{creation: 225351535,
id: reference_4}]
]
}
最后,我想要的输出是一个包含所有creation和id值的单个数组,如下所示:
{payload=
[{creation: 1501535135,
id: reference_1},
{creation: 225351535,
id: reference_2,
{creation: 1501535135,
id: reference_3},
{creation: 225351535,
id: reference_4}]
}
我尝试了几种不同的方法,首先我尝试通过仅过滤一种对象类型的数组来转换它,以便删除字符串(xyz,abc):
singleArray:payload过滤器((元素,索引)->typeOf(元素)=“数组”)
在这一点上,我要将有效载荷展平。但是,筛选器抛出了一个错误。不确定使用
typeOf
时出现错误的原因,但另一种方法是使用is
,正如machaval提到的:
注意:下面的示例使用DW 2.0语法
或者这是速记
singleArray: payload[?($ is Array)]
因此,为了获得您的预期结果,我将使用以下方法:
singleArray: flatten(payload[?($ is Array)])
如果您发现仍然需要typeOf
,这应该可以工作(同样不确定您为什么会看到该错误)
typeOf
返回的是Type
类型,而不是字符串
类型,因此必须将其转换为字符串不确定为什么使用typeOf会出现错误,但我切换到了这个有效的表示法
singleArray:flant(有效负载过滤器$is:array)
感谢@short stack stevens的回复,您帮助我朝着正确的方向前进。请不要使用此机制来比较类型,而用户
typeOf(元素)是数组。
感谢您的建议,我仍然收到错误“没有名为'typeOf'的变量”
singleArray: flatten(payload[?($ is Array)])
singleArray: payload filter ((element, index) -> (typeOf(element) as String) == "Array")