我有json响应,在将其发送到目标系统之前,我需要将其分成多个部分。
我正在尝试for-each,但无法达到所需的输出。
输入json看起来像这样
{
parent :
{
child:
[{
a:[{},{},{},{}]
}]
}
}
应该看起来像这样 第1部分
{
parent :
{
child:
[{
a:[{},{}]
}]
}
}
第2部分
{
parent :
{
child:
[{
a:[{},{}]
}]
}
}
有人可以帮我吗?
答案 0 :(得分:3)
很难根据您的示例json判断其为未格式化的json。
注意:预期的输入/输出与我原来的答案有所不同,因此是更新
但是,这可行,并且可以根据您的实际输入进行调整。
首先,使用foreach来迭代有效负载的集合部分(根据您的示例,其为#[flatten(payload.parent.child.a)]
(但是由于“ child”数组是否也将包含多个元素而不清楚,这可能会发生变化)。
您也没有提到要如何拆分它。根据您的示例,它是每2条记录。因此,请使用batchSize
属性并将其设置为2(将其更改为您的实际要求)。
然后,您需要重新添加包装的json元素,因为您将在foreach中将其丢失:
<foreach doc:name="For Each" collection="#[flatten(payload.parent.child.a)]" batchSize="2">
<ee:transform doc:name="Transform Message" doc:id="7b1cccb7-fcbb-41b3-a08f-bac5600df2f2" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
parent :
{
child:[
a: payload
]
}
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<logger level="ERROR" message="Split items here: #[payload]" />
</foreach>
输出与您的新预期输出匹配:
Split items here: {
"parent": {
"child": [
{
"a": [
{
},
{
}
]
}
]
}
}
Split items here: {
"parent": {
"child": [
{
"a": [
{
},
{
}
]
}
]
} }