【问题标题】:How to split the objects in an array to generate as individual Objects in Mule4如何拆分数组中的对象以在 Mule4 中生成单个对象
【发布时间】:2020-09-15 21:18:58
【问题描述】:

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

这里第一个标题需要加入第一个细节以创建单独的Shipping 对象,第二个Header 需要加入第二个Details 以创建单独的Shipping 对象,反之亦然,因为它有机会拥有更多标题和细节。

注意:如果header 存在,则始终有匹配的details 将以相同的方式存在。

请求和预期响应如下。 Mule 运行时 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",
        "SerialNo": "62",
        "ShippingDate": "22/05/1977",
        "Address1": "Test2Address"
      },
      "Details": {
        "SerialNo": "62",
        "LineNo": "1",
        "Description": "Test1"
      },
      "Details": {
        "SerialNo": "62",
        "LineNo": "1",
        "Description": "Test2"
      }
    }
  }]

预期响应

[
  {
    "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"
      },
      "Details": {
        "SerialNo": "62",
        "LineNo": "1",
        "Description": "Test1"
      }
      
    }
  },
  {
    "Shipping": {
      "Header": {
        "Identifier": "100",
        "SerialNo": "62",
        "ShippingDate": "22/05/1977",
        "Address1": "Test2Address"
      },
      "Details": {
        "SerialNo": "62",
        "LineNo": "1",
        "Description": "Test2"
      }
    }
  }]

希望我的问题得到解决。如果需要更多说明,请告诉我。

【问题讨论】:

    标签: mule dataweave mule-component mule4


    【解决方案1】:

    在这个脚本中,我尝试逐个字段逐个逐出重新映射字段,重用原始对象。

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

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

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

    【讨论】:

    • 太棒了。按预期工作正常。感谢您的快速回复
    猜你喜欢
    • 2013-01-10
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多