如何在数组中拆分对象以在Mule4中生成为单独的对象

问题描述

我有一个如下的数组请求。它可能有多个shipping对象,如下所示。在请求中,第二个对象"shipping"具有两个Header和两个Details

在这里,第一个标头需要与第一个详细信息结合以创建单独的Shipping对象,第二个Header需要与第二个Details结合以创建单独的Shipping对象,反之亦然因为它有机会获得更多标题和详细信息。

注意:如果出现header,则总是以相同的方式出现匹配的details

请求和预期响应如下。 ule子运行时4.2.2

任何想法如何进行重组,对于解决方案的任何想法都将不胜感激。谢谢。

请求

[
  {
    "Shipping": {
      "Header": {
        "Identifier": "100","SerialNo": "61","ShippingDate": "10/08/1988","Address1": ""
      },"Details": {
        "SerialNo": "61","LineNo": "1","Description": "Shipping Details"
      }
    }
  },{
    "Shipping": {
      "Header": {
        "Identifier": "100","SerialNo": "62","ShippingDate": "21/08/2021","Address": "Test1Address"
      },"Header": {
        "Identifier": "100","ShippingDate": "22/05/1977","Address1": "Test2Address"
      },"Details": {
        "SerialNo": "62","Description": "Test1"
      },"Description": "Test2"
      }
    }
  }]

预期响应

[
  {
    "Shipping": {
      "Header": {
        "Identifier": "100","Description": "Test1"
      }
      
    }
  },"Description": "Test2"
      }
    }
  }]

希望我的问题解决。让我知道是否需要进一步说明。

解决方法

在此脚本中,我试图通过重用原始对象来逐出重映射字段。

payload reduce ((shipping,acc=[]) -> 
    acc ++ (
        shipping.Shipping.*Details map ((detail,index) -> 
            {
                Shipping: { 
                    Header: shipping.Shipping.*Header[index],Details:  shipping.Shipping.*Details[index] 
                }
            }
        )
    )
)

您可以使用*Details*Header进行映射,它们应产生相同的输出

已编辑:缺少标题逻辑,并且发运除标题和详细信息外没有其他内容

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...